stringbuffer stringbuilder区别,StringBuilder和StringBuffer的区别

  stringbuffer stringbuilder区别,StringBuilder和StringBuffer的区别

  在Java开发面试中,人们经常被问到String、StringBuider和StringBuffer之间的区别。很多人都没有给出全面深入的答案,那么他们之间有什么区别呢?

  如何解决写爬虫IP受阻的问题?立即使用。

  这三个都是用来操作字符串的。String通常用于定义变量,而StringBuilder StringBuffer通常用于拼接字符串。但其实String也可以用来拼接字符串,但为什么我们很少用呢?先说三者的底层代码。

  String的底层代码是一个用final修饰的char数组,这意味着在定义了一个String变量之后,变量的内容是不可变的。

  StringBuilder和StringBuffer都继承自AbstractStringBuilder。这个类的char数组没有用final修饰,它的内容是可变的。这是什么意思?

  例如:

  字符串s1= a

  String s2=新字符串( b );

  字符串s3=s1 s2这样,如果我们得到的是字符串“ab”,由于字符串底部没有不可变的字符串,所以会创建三个对象,这些对象都会占用内存,而这三个对象从来没有丢失过引用,所以jvm无法进行垃圾回收,造成内存资源的极大浪费,这在我们的开发中是不被尊重的,而StringBuilder和StringBuffer则不存在这样的问题。

  通过底层代码我们可以看到,StringBuilder和StringBuffer通过判断字符串的长度是否足够来创建一个新的数组来封装数据,而原来的对象则被放弃引用等待垃圾回收,从而减少了内存的浪费。所以我们在拼接字符串的时候通常会使用StringBuilder和StringBuffer,但是在执行效率上有所不同。StringBuilder具有更高的执行效率。为什么?

  通过底层源代码可以发现,StringBuffer在拼接字符串时使用同步锁,提高了安全性,而StringBuilder不使用同步锁,所以效率提高了。

  是时候搞清楚两者的区别了!

  本文来自java入门专栏,欢迎学习!这就是String、StringBuffer和StringBuilder区别的细节。更多请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: