请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于String,StringBuilder,StringBuffer分别应用场景

老师,听视频这么说。StringBuilder快,StringBuffer安全,那String这个类,顿时就有点尴尬了,那我们一般为什么不就用这两个类,干嘛还用String?(尽管我们知道,很多场景下,我们一般都是习惯性定义字符串为String)

这三者的应用场景有什么区别,什么情况下,我该用哪个类,尤其String类。

正在回答 回答被采纳积分+3

1回答

Masquerade云 2018-03-22 22:21:18

字符串拼接的时候,用SringBuilder和StringBuffer性能更好,因为String是不能改变的,例如我们声明了一个String s = "abc";当我们改为String s = s+"de";的时候,其实是重新声明了一个String s,就是String s="abc"+"de";而不是直接在之前的String上面操作,所以会有性能上面的问题。而StringBuilder和StringBuffer调用append方法是直接在上面进行修改操作的,性能比String好。然后其余的问题就是StringBuilder是线程不安全的,而StringBuffer是线程安全的,在不同的场景进行选择了。

0 回复 有任何疑惑可以回复我~
  • Jimin #1
    这位同学解释的很不错,我补充一点,如果String 后面是多个【常量】字符串拼接,其实和SringBuilder、StringBuffer也差不多,这时候编译器在编译阶段会做特殊的优化
    回复 有任何疑惑可以回复我~ 2018-03-23 11:20:46
  • 我想问一下,例如我们声明了一个String s = "abc";当我们改为String s = s+"de";的时候,其实是重新声明了一个String s,就是String s="abc"+"de";
    当我不知道这个问题的结果时,我应该怎么去跟踪这个过程呢
    回复 有任何疑惑可以回复我~ 2018-06-22 16:51:36
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信