stringbuffer和stringbuilder和string的区别,简述stringbuffer和stringbuilder有什么区别

  stringbuffer和stringbuilder和string的区别,简述stringbuffer和stringbuilder有什么区别

  无论是做爪哇或是安卓系统,都避免不了遇到这个问题,其实开发过程中一般情况下是不会纠结,这个问题是面试必选经典题,今天有时间,就总结一下。

  写爬虫互联网协议(互联网协议)被封了怎么解决?立即使用

  StringBuffer、StringBuilder区别

  字符串缓冲器与StringBuilder中的方法和功能完全是等价的,只是字符串缓冲器中的方法大都采用了同步的关键字进行修饰,因此是线程安全的,支持并发操作,适合多线程中使用StringBuilder不支持并发操作,线性不安全的,不适合多线程中使用。新引入的StringBuilder类不是线程安全的,但其在单线程中的性能比字符串缓冲器高。(推荐学习:JAVA视频教程)

  接下来,我直接贴上测试过程和结果的代码,一目了然:

  公共类字符串测试{

  公共静态字符串BASEINFO= Y先生

  公共静态最终int计数=2000000

  /**

  * 执行一项线赋值测试

  */

  public static void do string test(){

  字符串str=新字符串(BASEINFO);

  长启动时间=系统。当前时间毫秒();

  for(int I=0;我数/100;i ) {

  str=str miss

  }

  结束时间长=系统。当前时间毫秒();

  System.out.println((结束时间-开始时间)

  米利斯使用字符串时已计算成本。);

  }

  /**

  * 执行一项字符串缓冲器赋值测试

  */

  公共静态void dostring缓冲区测试(){

  string buffer sb=新字符串缓冲区(base info);

  长启动时间=系统。当前时间毫秒();

  for(int I=0;我数;i ) {

  某人=某人追加(‘小姐’);

  }

  结束时间长=系统。当前时间毫秒();

  System.out.println((结束时间-开始时间)

  米利斯在使用字符串缓冲器时已经付出了代价。);

  }

  /**

  * 执行一项StringBuilder赋值测试

  */

  public static void doStringBuilderTest(){

  StringBuilder sb=new StringBuilder(BASEINFO);

  长启动时间=系统。当前时间毫秒();

  for(int I=0;我数;i ) {

  某人=某人追加(‘小姐’);

  }

  结束时间长=系统。当前时间毫秒();

  System.out.println((结束时间-开始时间)

  米利斯在使用StringBuilder时已经付出了代价。);

  }

  /**

  * 测试字符串缓冲器遍历赋值结果

  *

  * @param mlist

  */

  public static void doStringBufferListTest(ListString mlist){

  字符串缓冲区sb=新字符串缓冲区();

  长启动时间=系统。当前时间毫秒();

  for (String string : mlist) {

  某人追加(字符串);

  }

  结束时间长=系统。当前时间毫秒();

   System.out.println(sb.toString()缓冲成本:

  (结束时间-开始时间)毫秒);

  }

  /**

  * 测试StringBuilder迭代赋值结果

  *

  * @param mlist

  */

  public static void dostringbuilderlistest(ListString mlist){

  StringBuilder sb=new StringBuilder();

  长启动时间=系统。当前时间毫秒();

  for(迭代器字符串迭代器=mlist。迭代器();迭代器。有next();) {

  某人(somebody的简写)追加(迭代器。next());

  }

  结束时间长=系统。当前时间毫秒();

   System.out.println(sb.toString()生成器成本:

  (结束时间-开始时间)毫秒);

  }

  公共静态void main(String[] args) {

  do string test();

  dostring缓冲测试();

  doStringBuilderTest();

  ListString list=new ArrayList string();

  列表。add(“I”);

  列表。add( like );

  list.add(北京);

  list.add(田);

  列表。add(“an”);

  列表。加(男人);

  list.add( . )));

  doStringBufferListTest(list);

  doStringBuilderListTest(列表);

  }

  }看一下执行结果:

  2711毫时,使用字符串的成本。

  使用字符串缓冲器时花费了211毫秒。

  使用StringBuilder时花费了141毫秒。

  我喜欢北京天安门。缓冲成本:1毫秒

  我喜欢北京天安门。建造成本:0毫从上面的结果可以看出,不考虑多线程,采用线对象时(我把计数/100),执行时间比其他两个都要高,而采用字符串缓冲器对象和采用StringBuilder对象的差别也比较明显。由此可见,如果我们的程序是在单线程下运行,或者是不必考虑到线程同步问题,我们应该优先使用StringBuilder类;如果要保证线程安全,自然是字符串缓冲区。

  从下面列表的测试结果可以看出,除了对多线程的支持不同,这两个类的用法和结果几乎没有区别。

  更多JAVA相关技术文章,请访问JAVA开发教程专栏学习!这就是stringbuffer和stringbuilder区别的细节。更多请关注我们的其他相关文章!

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

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