1、String
String是final修饰的,因此是不可变的。当String被修改时,实际是生成了一个新的String,指针指向了这个新的String。
2、StringBuffer
StringBuffer是可变的,因此当经常对一个字符串进行修改时最好使用StringBuffer,而不使用String。StringBuffer是线程安全的。
3、StringBuilder
StringBuilder是可变的、非线程安全地。它的速度要比StringBuffer快。在单线程中可以考虑使用StringBuilder。
那么问题来了,什么是线程安全?
线程安全就是说多线程访问同一代码,不会产生不确定的结果。
火车站售票就属于线程安全,试想一下如果火车站售票是非线程安全,那么就有可能不同窗口对同一张票进行出售。