一String类常量
String的值不可改变,这就导致每次对String的操作都会生成新的String对象,这样不仅效率低下,而且会大量的有限的内存空间被浪费,如下图所示
String str="hello";
str="world";
str="hello world"
创建三个对象
二StringBuilder和StringBuffer类字符串变量
StringBuffer类则代表一个字符序列可变的字符串,当一个StringBuffer被创建以后,通过StringBuffer提供的append()、insert()、reverse()、setCharAt()、setLength()等方法可以改变这个字符串对象的字符序列。一旦通过StringBuffer生成了最终想要的字符串,就可以调用它的toString()方法将其转换为一个String对象。(适用于单线程)(Synchronized)
StringBuilder类也代表可变字符串对象。实际上,StringBuilder和StringBuffer基本相似,两个类的构造器和方法也基本相同。不同的是:StringBuffer是线程安全的,而StringBuilder则没有实现线程安全功能,所以性能略高。(适用于多线程)