1、String
String是final修饰的,不可修改,每次操作产生新的对象。我对这句话是表示质疑的,请看以下代码:
带上final之后String类型的引用才是不可改变的!看了很多文章后,总结出来这句话少了俩字:String对象是被final修饰的,不可修改,每次操作都会产生新的对象(被final修饰的是String对象,不是String引用)。
2、StringBuffer、StringBuilder
都是在原对象基础上进行修改的,StringBuffer是线程安全的(synchronized关键字修饰),StringBuilder是线程不安全的。
性能:StringBuilder > StringBuffer > String。
选择的时候优先选择StringBuilder,多线程使用共享变量的时候用StringBuffer(不要以线程安全不安全去考虑选择,所有程序在写之前都要考虑线程安全问题)。