String,StringBuilder,StringBuffer联系与区别

版权声明:-万里晴空-祝你前途晴朗 https://blog.csdn.net/qq_35207917/article/details/83183984

三者的区别,主要来自于两个方面:
一个是线程安全,另一个是运行速度。
String是字符串常量,而StringBuider和StringBuffer是字符串变量。
String是运行速度最慢的,切由于String是最终类,所以是线程安全的。
Stirng为什么运行速度最慢哪?这要从jvm说起了,因为String一旦被赋值就不能改变,而当值发生改变时,例如:string str = ‘aa’,str = str + ‘bb’;
此时,输出str的值,确实是aabb,但是,却不能说,str是变量,原因是,当对str进行拼接的时候,会在内存中从新创建一个字符串常量,为它分配资源,原来的字符串常量将被垃圾回收期回收,从而造成String拼接的效率低,而StringBuffer和StringBuilder是字符串变量,所以,拼接的时候不用再创建对象,执行效率就提高了
再来说线程安全方面
由于StringBuffer的方法带有synchronized关键字,是线程安全的,所以,StringBuffer支持多线程访问,属于线程安全,而当多个线程方位stringbuilder的时候,多个线程改变了其中的内容,属于线程不安全的,
总结:
stringBuffer线程安全相对StringBuilder是效率低的,适合字符串大量操作
StringBuilder是线程不安全的,效率搞得,适合字符串大量操作
String:使用与少量字符串的拼接,

下面是代码测试:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_35207917/article/details/83183984