我們知道StingBuffer可以構建一個字符串,比如說,我們這樣來構建一個字符串,StringBuffer buffer = new StringBuffer(" M "); 這個顯然定義了一個StringBuffer的對象,並其初始值爲“ M ” ,但是我們來看看下面我們寫的這個語句 StringBuffer buffer = new StringBuffer(' M ');注意:這個括號裏面的是單引號。那麼它得到結果有什麼變化嗎?當然有啦。我們可以輸出buffer看看,我們輸出的結果爲空。這怎麼可能呢???不是裏面有一個字符嗎?但是程序不會騙人的。我們看看StringBuffer的API文檔,就知道了,原來我們在API中Stringbuffer的構造函數中沒有參數的是char型的,但是在API中可以看到有參數爲int型的構造函數,那我們就知道了,原來上面的那句代碼是將‘M’轉化爲int值後來進行構造的,表示初始化構造一個大小爲‘M’=77的容量。這也就是我們打印出來沒有東西的原因了。
我們來看下面的代碼來說明這個問題。
package test23;
public class StringBuffer_Test {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer('M');
sb.append('a');
sb.append('i');
sb.append('n');
//輸出的是ain,
//因爲在第一個建立對象的時候是調用的是new StringBuffer(int )構造函數,構造一個初始容量爲77('M'轉化爲int值爲77)
//然後在將後面的char型追加到StringBuffer對象後面,所以輸出的爲 "ain"
System.out.println(sb.toString());
}
}