一. String s = new String("A");會創(chuàng)建幾個對象。
如果只有這一句話,創(chuàng)建兩個對象,一個在堆,一個在字符串常量池,但是返回的是堆的對象。
如果字符串常量池已經(jīng)存在“A”,那么new創(chuàng)建一個對象,在堆中。
PS:String s2 = "SS";這句話只會在字符串常量池中創(chuàng)建。即創(chuàng)建一個對象。
二.String是否可以被繼承
不能,因為String類是這樣聲明的:public final class String extends Object。
主要看final關(guān)鍵字,final定義的類不可以被進(jìn)程,final定義的方法不可被重寫,final定義的變量不可以被修改。
三. StringBuilder和StringBuffer
StringBuilder不支持并發(fā)操作,線性不安全的,不適合多線程中使用。新引入的StringBuilder類不是線程安全的,但其在單線程中的性能比?StringBuffer高。
StringBuffer支持并發(fā)操作,線性安全的,適合多線程中使用。
StringBuffer中大量使用synchronized,效率較低。
四, 效率對比
StringBuilder>StringBuffer>String