面試題:String、StringBuffer、StringBuilder的區別與聯絡
阿新 • • 發佈:2019-01-05
上訴三個都屬於常見物件(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的資料最終是一個字串資料;而陣列可以放置多種資料,但必須是同一種資料型別的。