• String、StringBuilder、StringBuffer 区别


    public static void testStringBuffer(){
        long start System currentTimeMillis();
        StringBuffer sbuf = new StringBuffer();
        for(int=0;i<20000;i++){
        sbuf.append(i+",");
      }
    System.out.println(System, currentTimeMillis()- start);
    }
    public static void teststringBulider(){   long start = System currentTimeMillis();   StringBuilder builder = new StringBuilder(   for (int i =0; i< 20000: i++)(     builder. append(i +",");     System, out. printIn(System. currentTimeMilliso- start);
        }
      }
    public static void main(String[] args){   teststring(); teststringBuffer();   teststringBulider();
      }

     区别一:性能

    运行结果如下:1217  9  6

    从测试结果看出, String类每次追加字符串都会创建新的对象,消耗的时间最长,性能极差。

    而 String Buffer和 String Builder每次追加字符串都是同一个对象,消耗的时间极短,性能良好。

    而 String Buffer比 String builder消耗时间长一点点,这又是什么原因呢?别看急,继续往下看,

    区别二:线程是否安全

    · String:线程不安全    · String Buffer:线程安全     · String Builder:线程不安全

    String Buffer和 String Builder的使用几乎完全相同,唯一的区别就是线程安全性不同。

    正是因为 String Buffer是线程安全的(支持同步锁),所以性能比String Builder稍差一点。

    可以看到 String Builder速度是最快的,但当在多线程中使用 String Builder的操作是不安全的,而但 String Buffer是可以正确操作的。

    当然大多数情况下就是我们是在单线程下进行的操作,所以大多数情况下是建议用 String Builder而不用String Buffer的。

    总结:

    1.如果要操作少量的数据使用 String。

    2 多线程操作字符串缓冲区下操作大量数据使用 String Buffe。

    3.单线程操作字符串缓冲区下操作大量数据使用 String Builde。

  • 相关阅读:
    我的Firefox
    九成偏股基金净值增长弱于大盘 仅18只跑赢指数
    大事记:
    Symantec AntiVirus企业版(接受管理)客户机端卸载方法
    CDP
    两行代码解决iOS上拉下拉时,底部栏顶部栏跟随手势滚动
    8Windows概要
    4断点和单步执行
    win7下windbg本机内核调试
    windbg技巧看和改标志位创建进程时断下
  • 原文地址:https://www.cnblogs.com/Jackie-zhang/p/10634679.html
Copyright © 2020-2023  润新知