各位晚上好,是啊,再過兩個小時就是"明天"了
終於有時間來整理一下有趣的東西了,話不多說.
先看代碼
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()方法需要賦值給一個變量.
這樣就沒有問題了.
感覺這段代碼很有意義.可以看出基礎.
好了,今晚就這樣了.
如有錯誤請指出,我會修改,並多加學習.