zoukankan      html  css  js  c++  java
  • String、StringBuffer、StringBuilder比较

    String、StringBuffer、StringBuilder三者是字符串中重要的内容,也是面试过程中经常问到的问题,下面就来总结一下三者的区别。

    1.三者都可以存储和操作字符串。

    2.String类提供了数值不可改变的字符串,即一旦定义的一个String对象,则不可以对其进行修改,要修改则是新创建了一个String对象。

    String str = "a"+"b"+"c";

    进行上述操作,则底层操作如下:

    String s1 = "a";
    String s2 = "b";
    String s3 = "c";
    String str = s1+s2+s3;

    总共创建了四个对象。创建新的对象,则需要消耗更多的资源。

    3.StringBuffer和StringBuilder可以对字符串进行修改,如要修改字符串,则是在原串上进行操作,不用进行新对象的创建。

    4.StringBuilder:线程非安全

     StringBuffer:线程安全

    5.由于以上原因,执行效率:StringBuiler>StringBuffer>String

    下面进行代码演示,字符a连接10万个a,即进行10万次操作,可看出三者执行效率:

     1 public class Main {
     2 
     3     public static void main(String[] args) {
    4 String str = "a";
    5 long t1 = System.currentTimeMillis(); //获得的是自1970-1-01 00:00:00.000 到当前时刻的时间距离,单位为毫秒 6
          for(int i=0;i<100000;i++){
    7 str = str+'a';
    8 }
    9 long t2 = System.currentTimeMillis();
    10 System.out.println("String操作所用时间:"+(t2-t1)); 11 12 /*---------------------------------------*/ 13 14 StringBuffer sb = new StringBuffer("a");
    15 long t3 = System.currentTimeMillis();
    16 for(int i=0;i<100000;i++){
    17 sb.append('a');
    18 } 19 long t4 = System.currentTimeMillis(); 20
            System.out.println("StringBuffer操作所用时间:"+(t4-t3)); //获取StringBuffer操作所用的时间 21 22 /*---------------------------------------*/ 23 24 StringBuilder sd = new StringBuilder("a");
    25 long t5 = System.currentTimeMillis();
    26 for(int i=0;i<100000;i++){
    27 sd.append('a');
    28 } 29 long t6 = System.currentTimeMillis();
    30 System.out.println("StringBuilder操作所用时间:"+(t6-t5)); //获取StringBuilder操作所用的时间 31 } 32 33 }

    运行结果如下:

    可以看出,StringBuffer和Stringbuilder操作效率比String高得多,StringBuilder操作效率稍微大于StringBuffer。

    综上,三者使用场景如下:

    (1)如果要操作少量的数据用String,更为简洁方便

    (2)单线程操作字符串缓冲区下操作大量数据使用StringBuilder

    (3)多线程操作字符串缓冲区下操作大量数据使用StringBuffer

     

  • 相关阅读:
    【go语言学习】标准库之time
    【go语言学习】文件操作file
    【go语言学习】反射reflect
    【go语言学习】通道channel
    soap添加
    ubuntu apache 启用gzip
    git 版本回退
    ubuntu打开crontab日志及不执行常见原因
    Ionic3 怎么打开第三方 app,最简单粗暴的方法
    Windows安装使用Openssl创建pks p12证书
  • 原文地址:https://www.cnblogs.com/cppeterpan/p/6978992.html
Copyright © 2011-2022 走看看