美文网首页
String、StringBuilder、StringBuffe

String、StringBuilder、StringBuffe

作者: 122604 | 来源:发表于2017-02-24 10:01 被阅读0次

    1、可变性

    String对数据的保存是通过字符数组存储,但是该数组使用了“final”进行修饰,所以是不可变的;String中定义:private final charvalue[];

    StringBuilder和StringBuffer都是集成于AbstractStringBuilder,AbstractStringBuilder中对数据的保存也是通过字符数组进行保存的,但是没有进行"final"修饰,所以是可变的;AbstractStringBuilder中定义:char[]value;

    2、安全性

    String的数组是不可变得,可以理解成常量,所以是线程安全的;

    AbstractStringBuilder中的数组是可变的,但是StringBuffer中方法使用了同步锁,因此也是线程安全的。而StringBuilder则是线程不安全的;

    StringBuffer中方法如下:

    @Override

    public synchronizedStringBufferappend(Object obj) {

    toStringCache=null;

    super.append(String.valueOf(obj));

    return this;

    }

    3、StringBuilder与StringBuffer的共同点

    两者有共同的父类,所以他们有共同的父类方法,只是StringBuffer针对父类方法添加了同步锁;

    单线程使用StringBuilder效率要高于StringBuffer;

    相关文章

      网友评论

          本文标题:String、StringBuilder、StringBuffe

          本文链接:https://www.haomeiwen.com/subject/mtoiwttx.html