您的位置:首页 > 产品设计 > UI/UE

string、stringbuffer和stringbuilder的区别

2017-06-30 09:10 435 查看

1、可变与不可变

string类中使用字符数组保存字符串 如下就是, 因为有‘final’修饰符 所以string对象是不可变的

 private final char value[];

stringbuffer和stringbuilder都继承了abstractstringbuilder 类 ,在abstractstringbuilder中也是使用字符数组保存字符串,如下就是 可知这两个对象都是可变的。

char[] value;

2、线程安全

string对象是不可变的 可以理解为常量 因此线程安全

abstractstringbuilder 是stringbuilder和stringbuffer的公共父类 定义了一些字符串的基本操作 和一些公共方法

stringbuffer对方法加了同步锁 因此线程安全

stringbuilder没有对方法加同步锁 因此非线程安全

3、stringbuilder和stringbuffer的共同点

他俩有一个公共父类(抽象类)

抽象类与接口的唯一区别就是 抽象类可以定义一些子类共同的方法 子类只需要添加新的功能即可 不需要重写已经存在的方法

接口只是对方法的申明和常量的定义 。他俩都会调用抽象类中的方法如super.append

但stringbuffer在方法上加了synchronized关键字 进行同步

如果程序不是多线程 使用stringbuilder效率高于stringbuffer
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: