目录
StringBuffer与StringBuilder之间的区别
String
String的值是不可变得,这就导致每次对String操作都会生成新的String对象,这样不仅效率低下,也会创类大量有限的内存空间
对于拼接字符串的理解:
个人的理解是当字符串一开始为"aaa"的时候,JVM会先查找常量池中有没有为"aaa",如果没有的话就生成一个
后面拼接的时候并不是拼接完成后的再去常量池去查找,而是直接新建一个,并不是拼接完成后再去常量池中查找,如果拼接后从常量池查找,那么两次返回的值应该是true而不是false
这样就说明,拼接完成后,拼接之前的字符串的资源就被完全的浪费了
class Test005{
public static void main(String[] args) {
String a="123";
String b="1";
b=b+"23";
String c="1";
c=c+"23";
System.out.println(c); //c="123"
System.out.println(b == c); //false
System.out.println(b); //b="123"
System.out.println(a == b); //false
}
}
源自于这个评论的思考:
StringBuffer与StringBuilder
我们知道,String并不适用于需要对字符串进行多次修改的情况,当对字符串进行修改的时候,需要使用StringBuffer和StringBuilder类
与String不同的是,StringBuffer和StringBuilder对象能够被多次修改,并且不产生新的未使用对象
StringBuffer与StringBuilder之间的区别
StringBuilder在JavaSE5中被提出
两者最大的区别就是
在线程安全层面讲
1.StringBuilder是线程不安全的
2.StringBuffer是线程安全的
在效率方面来讲
1.StringBuilder在效率上较高
2.StringBuffer在效率上较低
三者之间的区别与联系
三者之间的区别
1.在是否可改变
String不可改变,每次进行拼接等变化都是创建新的对象
StringBuilder和StringBuffer可改变,可以在原有对象的基础上改变
2.在性能层面上
StringBuilder>StringBuffer>String
3.在线程安全层面上
String与StringBuilder线程不安全
StringBuffer线程安全
使用场景
当需要操作少量的数据时用String
当多线程操作大量数据的时候用StringBuffer
当单线程操作大量数据的时候用StringBuilder
参考文章
图析:String,StringBuffer与StringBuilder的区别_Chin_Style的博客-CSDN博客_string stringbuffer stringbuilder区别膜拜!华为大牛透彻讲解Java面试100道必考题,不管你工作几年,都得看看!现在免费分享给大家!_哔哩哔哩_bilibiliString、StringBuffer与StringBuilder之间区别_itchuxuezhe_yang的专栏-CSDN博客_stringbuffer膜拜!华为大牛透彻讲解Java面试100道必考题,不管你工作几年,都得看看!现在免费分享给大家!_哔哩哔哩_bilibili