String, StringBuffer和StringBuild
2019-08-18 本文已影响0人
原创迷恋者
String类
String是Java语言中非常基础和重要的类,提供了构造和管理字符串的各种基本逻辑。它是典型的immutable类,被声明成final class,所有的属性也都是final的。也正是由于它的不可变性,拼接、裁剪字符串等动作都会产生新的String对象。由于字符串操作的普遍性,这会对性能有明显影响。
String类原生地保证了基础线程安全,在拷贝构造函数中,Immutable对象在拷贝时也不需要额外复制数据。
StringBuffer类
StringBuffer是为解决上面提到的问题而提供的一个类,我们可以用add或append方法,把字符串添加到已有序列的末尾或指定位置。StringBuffer的本质是一个线程安全的可修改字符序列。它保证了线程安全,也带来了额外的性能开销。所以,除非有线程安全的需要,不然还是推荐使用StringBuilder。
StringBuffer是通过把各种修改数据的方法都加上synchronized关键字实现的。
StringBuilder
StringBuilder是JDK1.5中新增的类,与StringBuffer唯一的区别就是,它不是线程安全的,因此性能开销较小。
为了实现修改字符串的目的,StringBuffer和StringBuilder底层都时利用可修改的数组。