我的博客
欢迎来到我的博客
bunny.icu

String、StringBuilder、StringBuffer对比

String、StringBuilder、StringBuffer对比

String类的对象为字符串常量,在源码中可以看到String类用final修饰,创建后不可修改。
String类的对象用重载的运算符+修改,会产生新的对象。
StringBuffer 和 StringBuilder 类的对象均为字符串变量,能够被多次的修改,不产生新的未使用对象。

StringBuffer线程安全,StringBuilder线程不安全。

性能: StringBuilder > StringBuffer >> String

以下是百万次修改消耗的时间对比:

public static void main(String[] args) {
    long t0 = Calendar.getInstance().getTimeInMillis();

    String s1 = "";
    StringBuffer s2 = new StringBuffer();
    StringBuilder s3 = new StringBuilder();

    for (int i = 0; i < 1000000; i++) s1 += "0";
    long t1 = Calendar.getInstance().getTimeInMillis();
    for (int i = 0; i < 1000000; i++) s2.append("0");
    long t2 = Calendar.getInstance().getTimeInMillis();
    for (int i = 0; i < 1000000; i++) s3.append("0");
    long t3 = Calendar.getInstance().getTimeInMillis();

    System.out.println(t1 - t0);
    System.out.println(t2 - t1);
    System.out.println(t3 - t2);
}

输出(单位为毫秒):

40582   // String
12  // StringBuffer
13  // StringBuilder

Reference

Java| Java中String对+的重载 – CSDN
Java StringBuffer 和 StringBuilder 类 – 菜鸟教程

版权声明


本作品系原创, 转载须遵循 CC BY-NC-ND 4.0 许可协议
本文标题:String、StringBuilder、StringBuffer对比
本文链接:https://www.bunny.icu/archives/1461

推荐文章

发表评论

textsms
account_circle
email

bunny.icu

String、StringBuilder、StringBuffer对比
String类的对象为字符串常量,在源码中可以看到String类用final修饰,创建后不可修改。 String类的对象用重载的运算符+修改,会产生新的对象。 StringBuffer 和 StringBuilder 类的对象均…
扫描二维码继续阅读
2022-08-01