String StringBuffer 和 StringBuilder 的区别是什么?

提问者:帅平 问题分类:面试刷题
String StringBuffer 和 StringBuilder 的区别是什么?
1 个回答
娇喘界的扛把子
娇喘界的扛把子
String 类中使用 final 关键字修饰的字符数组来保存字符串,所以String 对象是不可变的。而 StringBuilder 与 StringBuffer 都继承自 AbstractStringBuilder 类,在 AbstractStringBuilder 中没有用 final 关键字修饰,所以这两种对象都是可变的。
1、String是不可变的,每次对String的操作都会产生一个新的String对象,因此在频繁进行字符串拼接等操作时效率较低。
2、StringBuffer和StringBuilder都是可变的,支持动态添加、删除、修改字符串内容。但是,StringBuffer是线程安全的,方法前使用了synchronized关键字来进行同步,所以在多线程环境下可以保证数据的安全性;
3、StringBuilder则是非线程安全的,方法没有使用同步机制,执行速度比StringBuffer稍快,但在多线程环境下可能会发生竞态条件问题。
发布于:1个月前 (02-08) IP属地:四川省
我来回答