一.String

(1)String对象一旦创建不可更改,源代码中用于存储字符串的数组使用了final修饰,原因java开发中很大程度上字符串一经创建不需要修改。

(2)String适合于少量字符串操作的,字符串每一次操作都会创建一个新的String对象,很费内春和时间

二.StringBuffer

(1)线程安全,方法均由synchronized修饰,可以不需要额外的同步用于多线程中。

(2)可用append,insert方法进行字符串的拼接

(3)适用于多线程下在字符缓冲区进行大量操作的情况

三.StringBuilder

(1)非线程安全,运行于多线程中需要使用同步处理,单线程中使用StringBuilder比较好

(2)可用append,insert方法进行字符串的拼接

(3)适用于单线程下在字符缓冲区进行大量操作的情况

四.联系

(1)三者都是final修饰的类,不能被继承,主要是从性能和安全性上考虑,因为这几个类都是经常被使用着,且考虑到防止其中的参数被参数修改影响到其他的应用。

(2)String实现了三个接口:Serializable、Comparable<String>、CarSequence,StringBuilder只实现了两个接口Serializable、CharSequence,相比之下String的实例可以通过compareTo方法进行比较,其他两个不可以。

注意:使用StringBuffer和StringBuilder时最好选择合适的初始化空间大小,默认是16,StringBuffe每次空间不够,便会重新申请一个空间,将原来的内容复制到新的数组中,比较费时。

欢迎关注公众号:

如果感觉文章内容对您有用,记得点赞吆!