String、StringBuffer、StringBuilder
String
String被final修饰,所有属性也都是final的,这原生的保证了基础线程安全(因为我们无法对它内部的数据进行任何修改)。
它是个典型的immutable类,所以拼接、裁剪字符串等动作,都会产生新的String对象。
因此,频繁使用String类会对应用性能有明显的影响,操作不当可能会产生大量的临时字符串。
StringBuffer和StringBuilder
StringBuffer和StringBuilder底层都是利用可修改的数组实现的(char,JDK9以后是byte)。都继承了抽象类AbstractStringBuilder。