【Java基础】 String、StringBuilder、StringBuffer的区别是什么

关于String、StringBuilder、StringBuffer的区别从4个方面来理解。

1.值可变性

String是不可变的,如果尝试修改String的值,都会产生一个新的字符后对象。
StringBuilder、StringBuffer是可变的,修改不会产生新的对象。

2.线程安全

String是线程安全的,因为String是不可变的。
StringBuffer是线程安全的,因为它的每个操作方法都加了synchronized关键字。
StringBuilder是线程不安全的。在单线程下使用StringBuilder效率更高。

3.性能

String性能最低,其次是StringBuffer,StringBuilder性能最高。
因为String不可变,所以每次做字符串拼接的时候一直创建新的对象和分配内存。
StringBuffer加了同步锁而StringBuilder是无阻塞的。

4.数据存储

String—>字符串常量池
StringBuilder、StringBuffer—>堆内存

你可能感兴趣的:(#,Java基础面试题,java,面试)