1.String:静态字符串(定长字符串)
1.1 一经定义,长度和内容都是不可以被改变的,一旦发生改变
就在内存中形成新的字符串
注意:因此一般不会使用String做字符串拼接
1.2 String做字符串拼接的危害:
在内存中形成大量的细粒度(小玩意)对象,而这些对象的都是
否长度性质的产物,给Java虚拟机内存回收带来沉重的负担
1.3 String 的应用场景
String应用于一经定义内容不会发生改变的环境
例如:定义一个字符串属性,只对该属性赋值或读取,
而不进行字符串拼接/内容替换等操作
2.StringBuffer:动态字符串
无论进行多少次字符串拼接,应用的都是一段内存
由于该类内部大量的方法都是线程同步的,因此一般 应用于多线程环境
而在非多线程环境下,由于存在额外的线程同步开销,因此,性能很差
3.StringBuilder:
在Java1.5后,Sun意识到非多线程环境下字符串拼接性能的重要性
因此针对非多线程环境,编写了StringBuilder用以代替StringBuffer在
非多线程环境中完成动态字符串拼接处理