String、StringBuffer与StringBuilder的区别

比较String和StringBuffer:

1. String是不可变类,String对象一旦被创建,其值将不能被改变;StringBuffer是可变类,当对象被创建后仍可以对其值进行修改。

    当一个字符串经常需要被修改时,最好使用StringBuffer来实现。因为如果使用String,就会生成很多无用的对象,由于这些对象会被GC回收,因此会影响程序的性能。

2. 当实例化String时,有两种方式进行初始化,分别为:String s = new String("Hello")和String s = "Hello";而StringBuffer只能使用构造函数的方式进行初始化,即StringBuffer sb = new StringBuffer("Hello");

StringBuilder:

     类似StringBuffer,也是可变类。但不同的是,StringBuilder不是线程安全的,而StringBuffer是线程安全的(因为String是不可变类,所以String也是线程安全的)。

总结:

1. 如果要操作的数据量比较小,应优先使用String类;

2. 如果是在单线程下操作大量数据,应优先使用StringBuilder类;

3. 如果是在多线程下操作大量数据,应优先考虑StringBuffer类。

原文地址:https://www.cnblogs.com/jiqianqian/p/6559803.html