最近在看面试题,stringbuffer和stringbuild也是经常会问到的,而在写代码的过程中,用到这两者都很少,一般都是string,如果要对字符串经常进行更改,那么stringbuffer和stringbuild这两个可变字符串会更好,因为stringbuffer和stringbuild类的对象进行内容更改都不会产生新的对象,而string底层由final修饰,每次改变string的值,都会产生一个新的string对象,占用我们的堆内存。
1.stringbuild——可变字符串,在java5中被提出,相较于stringbuffer,stringbuild是线程不安全的,但是速度更快,在不考虑线程安全的情况下,使用stringbuild会更多。
1 StringBuilder stringBuilder = new StringBuilder(); 2 stringBuilder.append("故事不感人"); 3 stringBuilder.append("讲故事的人却一直流眼泪"); 4 System.out.println(stringBuilder); 5 //故事不感人讲故事的人却一直流眼泪 6 stringBuilder.insert(5,","); 7 System.out.println(stringBuilder); 8 //故事不感人,讲故事的人却一直流眼泪 9 stringBuilder.reverse();//文字倒序 10 System.out.println(stringBuilder); 11 //泪眼流直一却人的事故讲,人感不事故
在stringbuild的源码中,方法也没有经过 synchronized 修饰,所以线程不安全
2.stringbuffer——可变字符串,相较于stringbuild,线程安全,但是速度比stringbuild慢,方法也很类似。
源码中的方法被synchronized修饰
标签:StringBuff,String,stringBuilder,System,线程,stringbuild,stringbuffer,StringBuild,s From: https://www.cnblogs.com/zeshengliao/p/17088427.html