zoukankan      html  css  js  c++  java
  • String、StringBuuffer、StringBuilder三者的区别

    string

    String 字符串常量(final修饰,不可被继承,线程不安全),String是常量,当创建之后即不能更改,可以给多个引用共享,在做大量字符串拼接的时候效率低。(可以通过StringBuffer和StringBuilder创建String对象(常用的两个字符串操作类)。)

    StringBuffer、StringBuilder

    可以改变字符串的长度和内容,是一个字符串缓冲区,在做大量字符串拼接的时候不会开辟新的空间。

    StringBuffer 字符串变量(线程安全,效率低)

    其也是final类别的,不允许被继承,其中的绝大多数方法都进行了同步处理,包括常用的Append方法也做了同步处理(synchronized修饰)。其自jdk1.0起就已经出现。其toString方法会进行对象缓存,以减少元素复制开销。

    public synchronized String toString() {
    if (toStringCache == null) {
    toStringCache = Arrays.copyOfRange(value, 0, count);
    }
    return new String(toStringCache, true);
    }
    1
    2
    3
    4
    5
    6
    StringBuilder 字符串变量(非线程安全,效率高)

    其自jdk1.5起开始出现。与StringBuffer一样都继承和实现了同样的接口和类,方法除了没使用synch修饰以外基本一致,不同之处在于最后toString的时候,会直接返回一个新对象。

    public String toString() {
    // Create a copy, don’t share the array
    return new String(value, 0, count);
    }
    1
    2
    3
    4

    ---------------------

  • 相关阅读:
    c# 操作数据库
    dataview findrows
    C++:gethostname,gethostbyname获取IP地址和计算机名
    MQTT
    STM32操作外部SRAM
    JAVA中最常用的快捷键总结
    Zstack中End Device设备失去父节点时的重新入网处理方法(转)
    VC++ 重叠窗口
    (转载)PLC内部电路常见的几种形式
    VS2005 DoModal函数
  • 原文地址:https://www.cnblogs.com/ly570/p/11179183.html
Copyright © 2011-2022 走看看