Java中的String、StringBuilder与StringBuffer
String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。
String类的特性
-
String类的对象一旦被创建就不可更改,但字符串引用可以重新赋值。
不可更改的原因
在进行字符串拼接时,是先创建一个新对象(名字相同),然后将拼接后的值赋值给这个新对象,随后,JVM的垃圾回收机会回收原来的对象。 -
使用了final修饰,不能被继承。
StringBuilder类的特性:
-
StringBuffer类的对象能够被多次的修改,并且不产生新的未使用对象。
-
StringBuilder 类在 Java 5 中被提出, StringBuilder 的方法不是线程安全的(不能同步访问)。
-
由于 StringBuilder有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则不能选用。
StringBuilder 与 StringBuffer
-
StringBuffer也是一个关于字符串处理的类
-
StringBuffer和StringBuilder类拥有的方法基本相同,但是两者底层原来的区别如下:
1)StringBuffer是线程安全的,同步处理的,性能稍慢,如果需要线程安全的情况下要用StringBuffer。
2)StringBuilder是非线程安全的,并发处理的,性能稍快,一般建议用StringBuilder
小结
在字符串拼接操作较多的情况下,优先使用StringBulider(单线程下使用)。