一.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每次空间不够,便会重新申请一个空间,将原来的内容复制到新的数组中,比较费时。
欢迎关注公众号:
如果感觉文章内容对您有用,记得点赞吆!