String类只能保存不可变的字符串(由于String是有finnal修饰的),即new时指定了特定字符串,在需要别的字符串时系统会自动创建新的变量,如下:
String str1="Hello"
system.out.println(str1);
system.out.println(str1+"World");
这里str1是字符串“Hello”,在下面输出时对其字符串拼接,形成新的字符串“HelloWorld”,这是JVM会自动创建一个str2=“HelloWorld”(这里str2是我假设的变量名称)。
当我们在程序中需要很多变化的字符串时,系统中会多出来很多临时变量。而StringBuilder和StringBuffer就是用来解决这个问题的。
StringBuilder和StringBuffer基本类似,唯一不同的是StringBuffer实现了线程安全,而StringBuilder线程不安全。所以StringBuilder的性能相对较高。因此一般情况下,创建一个内容可变的字符串对象,使用StringBuilder类