String、StringBuffer、StringBuilder的区别

String类:String类实例化的字符串对象的值是不可以改变的,如果要改变该对象的值,就需要开辟新的内存空间来存放新的值,然后将该对象的引用指向新创建的内存空间地址,这样不仅效率低下,而且浪费有限的内存空间。

改变String对象的值,内存的变化


StringBuilder类和StringBuffer类:StringBuilder类和StringBuffer类的对象的值是可以动态变化的,改变其对象的值时不会创建新的对象。二者的区别是StringBuilder类不是线程安全的,StringBuffer类是线程安全的,但是由于使用StringBuilder类执行速度更快,所以多数情况下推荐使用StringBuilder,但是在要求线程安全的情况下必须使用StringBuffer类。


三者执行速度由快到慢顺序:StringBuilder > StringBuffer > String
继承结构图:


三者对应的使用情况:
1、如果要操作少量的数据用String;
2、单线程在字符串缓冲区下操作大量数据时用StringBuilder;
3、多线程在字符串缓冲区下操作大量数据时用StringBuffer。


总结:

你可能感兴趣的:(String、StringBuffer、StringBuilder的区别)