zoukankan      html  css  js  c++  java
  • String、StringBuffer、StringBuilder区别

    1、原理

    StringBuffer、StringBuilder和String一样,也用来代表字符串。String类是不可变类,任何对String的改变都 会引发新的String对象的生成;StringBuffer则是可变类,任何对它所指代的字符串的改变都不会产生新的对象。

    2、执行效率、线程安全

    三者的原理和操作基本相同,区别在于StringBufferd支持并发操作,线性安全的,适 合多线程中使用。StringBuilder不支持并发操作,线性不安全的,不适合多线程中使用。新引入的StringBuilder类不是线程安全的,但其在单线程中的性能比StringBuffer高。

    3、执行赋值效率代码测试:

    public class StringTest {
    public static String baseinfo="my";
    public static final int count=2000000;
    //String赋值测试
    public static void doStringTest(){
    String str=new String(baseinfo);
    long startTime=System.currentTimeMillis();//循环执行前,获取系统当前时间
    for(int i=0;i<count/100;i++){
    str=str+"dopa";
    }
    long endTime=System.currentTimeMillis();//结束循环时,系统的当前时间
    System.out.println("执行String赋值循环所花的时间"+(endTime-startTime));
    }

    //StringBuffer赋值测试
    public static void doStringBufferTest(){
    StringBuffer sb=new StringBuffer(baseinfo);
    long startTime=System.currentTimeMillis();
    for(int i=0;i<count;i++){
    sb=sb.append("dopa");
    }
    long endTime=System.currentTimeMillis();
    System.out.println("执行StringBuffer赋值循环所花的时间"+(endTime-startTime));
    }
    //StringBuilder赋值测试
    public static void doStringBuilderTest(){
    StringBuilder sb=new StringBuilder(baseinfo);
    long startTime=System.currentTimeMillis();
    for(int i=0;i<count;i++){
    sb=sb.append("dopa");
    }
    long endTime=System.currentTimeMillis();
    System.out.println("执行StringBuilder赋值循环所花的时间"+(endTime-startTime));
    }
    public static void main(String[] args) {
    doStringTest();
    doStringBufferTest();
    doStringBuilderTest();
      }

    }

    4、测试结果:

    执行String赋值循环所花的时间705
    执行StringBuffer赋值循环所花的时间55
    执行StringBuilder赋值循环所花的时间20

    测试结果单位都是毫秒,1毫秒(ms)=0.001秒(s)

  • 相关阅读:
    最简单的非交互ssh远程执行命令expect脚本
    [转]解决Adobe Reader X中金山词霸不能取词故障
    《TCP/IP Sockets 编程》笔记1
    Visual Studio 2005中无法调试CLR C++的枚举类型
    查找字符串中字符间不同的最大子串
    《C++ Primer》关于自增自减操作符的描述错误
    LVM逻辑卷管理
    《TCP/IP Sockets 编程》笔记2
    《TCP/IP Sockets 编程》笔记7
    Linux文件
  • 原文地址:https://www.cnblogs.com/dopaer/p/6605530.html
Copyright © 2011-2022 走看看