【死记硬背】
联系: String,StringBuilder,StringBuffer来表示字符串。
区别: String是内容不可变的字符串,而StringBuilder和StringBuffer是内容可以改变的字符串。 String底层使用了一个不可变的字符数组(final char[]),StringBuilder,StringBuffer底层用的是可变的字符数组(没有使用final来修饰) StringBuilder是线程不安全的,效率高。StringBuffer是线程安全的,效率低。
使用场景:经常需要改变字符串内容时使用StringBuilder和StringBuffer,并且优先使用StringBuilder,多线程使用共享变量时使用StringBuffer。
【答案解析】
String是final修饰的,不可变,每次操作都会产生新的String对象。StringBuilder和StringBuffer都是在原对象上操作,StringBuffer的方法都使用了synchronized修饰,所以是线程安全的。它们的性能排序为:StringBuilder > StringBuffer > String。
【温馨提示】
点赞+收藏文章,关注我并私信回复【面试题解析】,即可100%免费领取楼主的所有面试题资料!