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属地:四川省
我来回答
您需要 登录 后回答此问题!