String、StringBuilder、StringBuffer的区别


					 字符串篇
老话常谈字符类型的数据在项目中很常见,所以深刻的理解String,StringBuilder,StringBuffer尤为重要
               String         StringBuilder          StringBuffer

              相同点     字符串常量         字符串常量            字符串常量
              线程安全      无               非线程安全             线程安全
              字符序列     不可变的           可变                    可变
               速度              StringBuilder>StringBuffer>String
String   特点:
①、String类型的对象在内存中是不可变的。也就是说每一次创建一个对象都会在内存中开辟
一个内存空间,并重新指向新改变的内存空间地址。当内存中无用引用对象多了,GC会开始回收内存,
相应的运行速度也会变慢。
StringBuffer  特点:
①、StringBuffer线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,某些方法调用可以改变
 该序列的长度和内容。可将字符串缓冲区安全地用于多个线程。
②、StringBuffer 的主要方法是 append 和 insert 方法。append 方法始终将这些字符添加到缓冲区的末端;
而 insert 方法则在指定的点添加字符。

StringBuilder 特点:
①、StringBuilder是5.0新增的一个可变的字符序列字符串类,常用在字符串缓冲区被单个线程使用的时候
 建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快;
;