导航

String_StringBuff_StringBuild的区别

Posted on 2023-02-03 10:47  跑路的泽胜  阅读(109)  评论(0)    收藏  举报

  最近在看面试题,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修饰