zoukankan      html  css  js  c++  java
  • Java中String、StringBuffer和StringBuilder之间的区别

    String在Java中是字符串常量

    例如

    String str = "abc";
    str = str + 1;
    System.out.println(str);

    结果将是abc1

    在Java中String是一个字符串常量,str+1执行时Java创建一个新的String对象,将拼合后的字符串内容复制一次到新的String对象中,旧的String对象被标记为GC回收机制的待处理对象

    而StringBuffer和StringBuilder在一个对象上进行操作,不会产生对象回收的问题

    执行字符串加法时的速度比append快的原因

    在Java中,预编译的时候,char数组的+不重载String的加号,而是重载Java解释器中代码层面的拼合

    “A Simple" + "Java" + "Test Code"

    会被直接处理为

    ”A Simple Java Test Code"

    导致纯字符串的加法比append函数速度快

    但是如果执行

    String str1 = "A Simple ";
    String str2 = "Java ";
    String str3 = "Test Code";
    String str = str1 + str2 + str3;

    则加号直接重载String的append成员函数,String的速度将低于StringBuffer 和StringBuilder

    StringBuilder和StringBuffer

    StringBuilder是非线程安全的

    StringBuffer是线程安全的,JVM保证StringBuffer多线程安全操作

  • 相关阅读:
    #pragma
    STL~heap
    codeforces682A
    POJ1753(位操作和枚举)
    位运算
    getchar()(转)
    UVA2636
    UVA2639
    UVA2322
    UVa2521
  • 原文地址:https://www.cnblogs.com/liutianchen/p/7439835.html
Copyright © 2011-2022 走看看