每日一题 · Java
String、StringBuilder 与 StringBuffer 的区别
下列关于 String、StringBuilder、StringBuffer 的说法,正确的是?
A. String 是可变字符序列,拼接时不产生新对象
B. StringBuilder 线程安全,StringBuffer 线程不安全
C. StringBuffer 的方法多被 synchronized 修饰,线程安全,效率略低于 StringBuilder
D. 三者都能直接修改自身内容
解析
答案:C。思路:String 底层是 final 字符数组,内容不可变,每次拼接都会新建对象;StringBuilder 未加锁,线程不安全但单线程最快;StringBuffer 方法加 synchronized,线程安全但有一定性能开销。A 错在 String 不可变,B 把两者说反,D 错在 String 不可改。结论:单线程拼接用 StringBuilder,多线程共享用 StringBuffer。