基本概念
1.String String是个final类,不能被继承。同时相应的对象也是一个不可变对象,一旦创建就不能修改它的值。平时对于String的修改都是重新创建一个新的 对象,然后把新的值保存进去的。
2.StringBuffer StringBuffer是一个对象可变的类,对他进行修改的时候不会像String那样重新创建一个对象。
3.StringBuilder StringBuilder也是一个对象可变的类,对他进行修改的时候不会像String那样重新创建一个对象。StringBuilder和StringBuffer的区别就是StringBuilder的方法不是线程安全的了,但是速度快。
线程安全
如果进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他变量的值也和预期的是一样的,就是线程安全的。
建议
少量数据操作,可以使用String;如果是单线程操作大量数据,则用StringBuilder;如果是多线程,则使用StringBuffer。
不要使用String的“+”进行连接操作,使用StringBuffer和StringBuilder的append操作。
使用StringBuilder比StringBuffer仅能够提升10%-15%的性能,一般情况下不确定是否会有多线程的情况比较下,还是选择StringBuffer比较的保险。