基础知识整理 String,StringBuilder,StringBuffer 三者区别

String

String被设计成不可变类,所以他的所有对象都是不可变对象。 在代码 String s="Hello" ; s=s+"world!"中,对s进行了+操作,那么s所指向的那个对象并没有发生改变

因为s所指向的那个对象已经不是原来的"Hello"那个对象了,而是指向了另一个String对象,内容为"Hello world",原来的对象还存在于内存之中,只是s这个引用变量不再

指向他了。所以,用string来代表字符串会引起很大的内存开销。String的另一特点是,如果要使用内容相同的字符串,不必每次都new一个String。作为不可变类他也有其优点

因为它的对象是只读的,所以多线程并发访问也不会有任何问题


StringBuffer

相较而言,StringBuffer 允许修改,而不是每个不同字符串都产生一个新的对象

StringBuilder

同样也允许修,他与StringBuffer存在的区别在于:StringBuffer是线程安全的,同步处理的,性能较慢;StringBuilder是非线程安全的,并发处理的性能较快

你可能感兴趣的:(基础知识整理 String,StringBuilder,StringBuffer 三者区别)