用stringbuffer还是stringbuilder,StringBuffer和StringBuilder的区别

  用stringbuffer还是stringbuilder,StringBuffer和StringBuilder的区别

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

  String、StringBuffer和StringBuilder的区别:

  String

  String类是不可变的,即一旦创建了String对象,该对象中包含的字符序列就不可变,直到该对象被销毁。

  这是字符串类的解释。在萧仙儿看到这个情况之前,他无法理解上面的解释,如下

  字符串a= 123

  a= 456

  //打印出来的A是456

  System.out.println(一)看到这里,小仙儿不明白。他被改造了不是很明显吗?为什么说他是不可改变的阶级?

  从小仙儿和他的朋友那里了解到,String类的不变性体现在哪里。接下来看上面的a对象的内存存储空间图

  可以看到,当再次给A赋值时,并不是重新给堆中原来的实例对象赋值,而是生成一个新的实例对象,并指向字符串“456”。指向新生成的实例对象,以前的实例对象仍然存在。如果没有被再次引用,它将被垃圾回收。

  StringBuffer

  StringBuffer对象表示具有可变字符序列的字符串。创建StringBuffer时,可以通过StringBuffer提供的append()、insert()、reverse()、setCharAt()和setLength()等方法改变这个string对象的字符顺序。一旦通过StringBuffer生成了最终所需的字符串,就可以通过调用它的toString()方法将其转换为String对象。

  string buffer b=new string buffer( 123 );

  b . append( 456 );

  //b打印结果为:123456。

  system . out . println(b);看一下b对象的内存空间图:

  因此,StringBuffer对象是一个具有可变字符序列的字符串。它不会重新生成对象,新字符串可以连接到原始对象。

  StringBuilder

  StringBuilder类也表示可变字符串对象。其实StringBuilder和StringBuffer基本上是差不多的,两个类的构造函数和方法基本上是一样的。区别是:StringBuffer是线程安全的,而StringBuilder则没有实现线程安全功能,所以性能略高。

  StringBuffer是如何实现线程安全的呢?

  StringBuffer类中实现的方法:

  在StringBuilder类中实现的方法:

  因此,在StringBuffer类的方法中添加了synchronized关键字,这意味着在该方法中添加了一个锁,以确保线程安全。

  Java9的改进

  Java9改进了字符串的实现(包括string、StringBuffer和StringBuilder)。在Java9之前,string使用char[]数组存储字符,所以string的每个字符占用2个字节;Java9的字符串使用byte[]数组和一个编码标志字段来存储字符,所以字符串中的每个字符只占1个字节。所以Java9的字符串更节省空间,字符串的函数和方法不受影响。

  有关编程的更多信息,请访问:编程入门!那就是string,stringbuffer和stringbuilder。有什么区别?更多详情请关注我们的其他相关文章!

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

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