1. 程式人生 > >面試題:String、StringBuffer、StringBuilder的區別與聯絡

面試題:String、StringBuffer、StringBuilder的區別與聯絡

上訴三個都屬於常見物件(API):具體的使用方法此處不再詳細列舉

String類:

字串:就是由多個字元組成的一串資料,也可以看成是一個字元陣列,通過檢視API可知:

(1)字串字面值(如:“abc”)可以看成是一個字串物件;

(2)字串是常量,一旦被賦值就不能被改變,這也就是為什麼說:String類為什麼是final的原因。

String類的特點:

A:字串直接賦值的方式是先到字串常量池裡面去找,如果有就直接返回;如果沒有,就建立並返回。

B:一旦被賦值,就不能被改變。值不能變。

StringBuffer:

執行緒安全的可變位元組。

面試題1:String s = new String("hello")和String s = "hello"有區別嗎?

有區別。前者會建立兩個物件,後者建立一個物件。(分析請看String類的特點介紹)

面試題2:有關此處看程式寫結果的問題?

答:(1)字串如果是變數相加,先開空間,再拼接;

(2)字串如果是常量相加,先加,之後在變數池找,如果有就直接返回,沒有,就建立。

面試題3:StringBuffer和String區別?

StringBuffer長度和內容可變,String內容和長度不可變。如果使用StringBuffer做字串的拼接,不會浪費太多的資源。

面試題4:String、StringBuffer、StringBuilder的區別?

(1)String是內容不可變的,而StringBuffer、StringBuilder都是內容可變的。

(2)StringBuffer是同步的,資料安全的,但是效率低;    StringBuilder是不同步的,資料不安全,相比於來說,效率高。

面試題5:StringBuffer和陣列的區別?

二者都是可以看成是一個容器,裝其他的資料,但StringBuffer的資料最終是一個字串資料;而陣列可以放置多種資料,但必須是同一種資料型別的。