1、
String:字符串常量,即不可改变的对象。(
StringBuffer:字符串变量,(多线程安全的字符串类型)
StringBuilder:字符串变量
在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,之前对象s并没有变化,所以经常对String类型的字符进行操作时,生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, JVM 的GC 就会开始工作,那速度是一定会相当慢的。
而StringBuffer与StringBuilder是字符串变量,是可改变的对象,当用它们对字符串做操作时,实际上是在一个对象上操作的,这样就不会像String一样创建一些而外的对象进行操作,速度快。
特例:
此时生成str对象的速度很快,StringBuffer不占优势。这是因为对于jvm来说: