String,StringBuffer,StringBuilder区别

1.可变性

String内部是由final修饰的,所以是一个不可变的类,所以每次修改string值的时候都会产生一个新的对象;

StringBuffer和StringBuilder是一个可变类,字符串的变更不会产生新的对象;

2.线程安全性

String由于是不可变的所以是线程安全的

StringBuffer也是线程安全,因为它内部使用一个synchronized同步关键字;

StringBuilder不是线程安全,所以在多线程下操作应该使用以上两种;

3.性能方面

String由于不可变,在做字符串拼接或修改,需要重新创建新的对象以及内存分配;

StringBuffer比String性能更高点,因为它的可变性,意味着字符串被修改或者拼接不会导致新对象创建;

4.存储方面

String存储在字符串常量池中;

Stringbuffer和Stringbuider是存储在堆内存中的;

Stringbuffer和stringbuilder都是派生自AbstractStringbuidler这样一个抽象类。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容