Java String、StringBuilder、StringBuffer[笔记]
String对象是字符串常量(创建之后不可更改),StringBuilder和StringBuffer对象是字符串变量(可更改),三者主要区别在于执行速度和线程安全。
执行速度
执行速度:StringBuilder > StringBuffer > String
原因:
String对象的更改会不断创建和回收String对象,而StringBuilder、StringBuffer不会。
例如:
String str = “123"; System.out.println(str); str = str + "456"; System.out.println(str);
JVM是处理这四行代码过程:
1、创建一个String对象,赋值为”123”。
2、打印字符串。
3、创建一个新的String对象,将第1个对象的值加上”456”后赋值给它,并GC(垃圾回收机制)回收掉第一个对象。
4、打印新字符串。
线程安全
StringBuilder:非线程安全的。
StringBuffer:线程安全的(同步机制保障)。
使用场景
String:少量的字符串操作。
StringBuilder:单线程大量字符串操作。
StringBuffer:多线程大量字符串操作。