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

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

  • 相关阅读:
    事件总线2
    微信小程序视频录制教程
    vue插件开发-toast
    云计算中的测试,可从哪些维度入手
    ES配置及FAQ
    Azkaban安装及问题
    python 反编译 compileall
    平凡利用redis进行数据读写的一种优化
    彻底弄懂Redis的内存淘汰策略
    c# 判断年龄精确到日
  • 原文地址:https://www.cnblogs.com/ly570/p/11179183.html
Copyright © 2011-2022 走看看