[有趣] 關於一條有意思的代碼--------String與StringBuffer

各位晚上好,是啊,再過兩個小時就是"明天"了

終於有時間來整理一下有趣的東西了,話不多說.

先看代碼

String s1 = new String(“abc”);

StringBuffer s2 = new StringBuffer(“abc”);

s2.append(s1);

s1 = s2.toString();

s1 oncat(“abc”)

System.out.println(“s1”)

還是先當做問題來問s1的值爲

A.     abcabc

B.      編譯錯誤

C.     abcabcabc

D.     運行錯誤

 

 

剛剛看到這條代碼的時候不假思索脫口而出的選C,

我的理解是

String s1 = “abc”

StringBuffer s2 =”abc”

S2通過append()方法使s1的值添加到s2的後面

S2 = “abcabc”(StringBuffer類型)

S1 = s2(toString方法可以使StringBuffer類型轉化爲String類型)

Concat()方法將”abc”添加到s1後面

輸出s1爲”abcabcabc”

 步驟一氣呵成.

 所以我錯了.

事實證明我的基礎還是不夠,這條代碼的坑在於concat()方法

Concat()作用

String no1 = “前”;

String no2 = “後”;

No1.concat(No2);

將no2連接到no1的後面

但是.

這個方法並不是改變原值,而是創建一個新的值,是需要有人接收的.

意思是說用No1.concat(No2);

no1 no2 還是等於原值

編譯上沒有報錯,運行後沒有報錯

但使用斷點後,發現在變量窗口可以看見這條代碼顯示爲紅字說明有問題,但沒有影響程序其他語句.

如果這條代碼寫爲s1 = s1concat(“abc”);

那麼s1輸出就是abcabcabc

這裏就是一個concat()方法需要賦值給一個變量.

這樣就沒有問題了.


感覺這段代碼很有意義.可以看出基礎.


好了,今晚就這樣了.

如有錯誤請指出,我會修改,並多加學習.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章