Java中String,StringBuilder和StringBuffer的区别

2024-11-18 15:21:20
推荐回答(2个)
回答1:

在Java中,String,StringBuilder和StringBuffer的区别有:
String是对象不可变的(因为它的原理是一个final修饰的字符数组),而StringBuilder和StringBuffer是对象可变的,它们两个都继承AbstractStringBuilder类。
从线程安全角度考虑,String是对象不可变的,显然线程安全。StringBuffer对方法加了同步锁或者对调用的方法加了同步锁,所以是线程安全的,而StringBuilder并没有对方法进行加同步锁,所以是非线程安全的。

回答2:

区别
1、StringBuffer 与 StringBuilder 中的方法和功能完全是等价的,
2、只是StringBuffer 中的方法大都采用了 synchronized 关键字进行修饰,因此是线程安全的,
而 StringBuilder 没有这个修饰,可以被认为是线程不安全的。
3、在单线程程序下,StringBuilder效率更快,因为它不需要加锁,不具备多线程安全
而StringBuffer则每次都需要判断锁,效率相对更低