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

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

  • 相关阅读:
    强制ubuntu登陆用户退出
    命令行设置ubuntu 无密码自动登陆
    docker 添加普通用户权限
    CMake配置工程链接库
    配置glibc
    编译sfml
    GNOME设置快捷键
    设置jetson nano VNC
    深度学习中的基本概念——评价指标相关
    行为识别
  • 原文地址:https://www.cnblogs.com/ly570/p/11179183.html
Copyright © 2011-2022 走看看