观察java中有关String的源码
可知String类是使用final关键字修饰字符数组来保存字符串
这样做的目的私以为是为了String在使用中更加的安全,不会被中途修改。
String,StringBuffer和StringBuilder的区别是
性能上:
在对String类型进行改变的时候,都会生成一个新的String对象,然后将指向
新的String对象。而StringBuffer和StringBuilder都是在原对象上进行操作,而不是生成新的String对象并改变对象引用。
而在StringBuffer和StringBuilder中,StringBuilder相比于StringBuffer来说有大概10%~15%的性能提升,但冒着多线程不安全的风险。
线程安全:
String中对象是不可变的,线程安全。
StringBuffer对方法加了同步锁,所以是线程安全的。
StringBuilder中并没有对方法进行加同步锁,使用是非线程安全的。
使用的总结:
操作少量的数据: String
单线程: StringBuilder
多线程: StringBuffer