String和StringBuffer和StringBuilder的使用场景

String str = 'hello' // 在jvm中的存放图

String和StringBuffer和StringBuilder的使用场景_第1张图片

String str = new String('hello');

String和StringBuffer和StringBuilder的使用场景_第2张图片
String:就是因为底层有一个public final char value[]数组来保存数据,但是因为它是final的,所以这个value一旦指向一个地址就不能再改变指向。
StringBuffer和StringBuilder:它们的底层并没有用final去修饰数组value所以它们的字符串数据只是保存在堆中的,并没有保存在常量池中。
使用场景:
当没有大量重复的增加的时候,使用String没什么关系。
当有大量重复的增加的时候,并且是单线程就用StringBuilder(线程不安全)
因为StringBuilder并不是线程安全的,也因为他不是线程安全,也就是说它多线程的,它的效率很高。
而StringBuffer是线程安全的,所以它的效率不高,因为加上了锁。
String的复用性高,StringBuild和StringBuffer都可以用在大量重复的工作中,但是要注意要根据线程安全来区分使用的场景。

你可能感兴趣的:(java,开发语言)