String,StringBuffer,StringBuilder的区别
1.可变不可变
String:是字符串常量,在修改时不会改变自身,若修改,等于重新生成新的字符串对象。
StringBuffer:在修改时会改变对象自身,每次操作都是对StringBuffer对象自身进行修改,不是生成新的对象。使用场景:用于对字符串经常改变的情况下。主要方法有: append(),insert(),delete(),replace(),reverse()等。
2.线程是否安全
String:对象定义后不可变,线程安全。
StringBuffer:是线程安全的(对调用方法加入同步锁),执行效率较慢,适用于多线程下操作字符串缓冲区大量数据。
StringBuilder:是线程不安全的,适用于单线程下操作字符串缓冲区大量数据。
3.共同点:
StringBuilder和StringBuffer有共同的父类AbstractStringBuilder(抽象类)。
StringBuilder和StringBuffer的方法都会调用AbstractStringBuilder中的公共方法,如super.append(...),只是StringBuffer会在方法上加上synchronized关键字进行同步。
最后,如果程序不是多线程的,那么使用StringBuilder效率高于StringBuffer。
注:第一篇博文,不知道写点什么。就从网上以及资料上找到点java的基础知识以及自己所学到的和大家分享,彼此相互学习,也帮助自己回顾记忆。有不对的地方希望大家指正。