String、StringBuffer和StringBuilder的区别
共同点
三者共同之处:都是final类,不允许被继承,主要是从性能和安全性上考虑的,因为这几个类都是经常被使用着,且考虑到防止其中的参数被参数修改影响到其他的应用。
区别
StringBuffer是线程安全,可以不需要额外的同步用于多线程中;
StringBuilder是非同步,运行于多线程中就需要使用着单独同步处理,但是速度就比StringBuffer快多了;
StringBuffer与StringBuilder两者共同之处:可以通过append、indert进行字符串的操作。
String实现了三个接口:Serializable、Comparable、CarSequence
StringBuilder只
string是字符串常量,stringBuffer和stringbuilder是字符串变量,,
string一旦创建后是不可以改变的,但stringbuffer和stringbuilder是变量,是可以改变的。
线程安全方面的区别
StringBuffer对象在字符串缓冲区被多个线程使用时,stringbuffer中的很多方法带有
suynchronized关键字,所有可以保证线程安全,但stringbuilder的方法没有该关键字,所以不能保证线程的安全。
多线程建议使用stringbuffer单线程建议使用stringbuilder。
也就是说
String:适用于少量的字符串操作的情况下。
StringBuffer:适应于单线程下的字符缓冲区进行大量操作的情况。
StringBuilder:适用于多线程下在字符缓冲区进行大量操作的情况。