關於StringBuffer對象的append方法介紹,在Ivor Horton所著的《Java 2 入門經典(JDK 5)》(英文名:Beginning Java 2,JDK 5 Edition)中第4章數組和字符串講解中,第4.4小節(向StringBuffer對象增加其他內容)介紹了用append()方法追加子串的功能。原文提供例子如下:
StringBuffer buf=new StringBuffer("Hard ");
String aString = "Waxworks";
buf.append(aString,3,4);
原文說明:這個操作將aString的從索引位置3開始的由四個字符組成的子串追加到StringBuffer對象buf中。然後buf對象就會包含字符 串"Hard work"。
請注意,這個代碼的實際運行結果是: buf對象包含的字符串爲"Hard w"。
根據運行結果分析,StringBuffer對象的append()方法的參數,如果是String類型,那麼,後面取子串的操作實際是從索引3開始,取值到索引4之前的串。如果append的語句改成 buf.append(aString,3,3); ,那麼沒有添加aString的子串,即 buf包含的字符實際還是"Hard "。如果此語句再改成 buf.append(aString3,2); ,那麼系統會拋出"IndexOutOfBoundsException"的異常!
但是,如果append()的參數是字符數組(char[]),那麼結果就如原文所述,buf將包含串"Hard work". 代碼如下:
StringBuffer buf=new StringBuffer("Hard ");
char[] text ={'W','a','x','w','o','r','k','s'};
buf.append(text ,3,4); // buf包含串"Hard work"