【摘 要】對於一種編程語言來說,字符串處理是經常要進行的操作,Java語言類庫中提供了兩種常用的字符串類String類和StringBuffer類。本文通過兩個實例討論了String類和StringBuffer類的特點和區別。
【關鍵詞】Java程序設計;字符串使用;教學策略
0 引言
所有程序設計語言都要涉及對字符串的處理,在Delphi和C語言中,字符串的處理是用函數來完成的。而Java作爲一種完全面向對象的語言,以類的方式提供對字符串的操作。Java語言對字符串進行了封裝,主要提供了兩種類對字符串進行操作,分別是String類和StringBuffer類。String類創建的對象是隻讀的字符串,在字符串創建以後,其內容就不能再修改;而StringBuffer類創建的是可編輯字符串,所以StringBuffer類又叫做可編輯字符串類,可以用來處理需要轉變的字符串。
1 判斷字符串是否是迴文
所謂迴文字符串,就是這個字符串從前往後讀,和從後往前讀的內容都相同。例如字符串“abccba”就是一個迴文。而字符串“123”就不是迴文。判斷一個字符串是否是迴文,可以用String類來判斷,也可以用StringBuffer類來判斷。假設判斷String類型的字符串str是否是迴文。代碼如下:
int low=0,up=th()-1;
while(low if((At(low))!=At(up)) return false;
else {low++;up--;}
}
return true;
從以上的代碼中可以看到,判斷String類型的字符串str是否是迴文,需要一個一個遍歷字符串的內容,從前往後第i個字符和從後往前第i的字符是否相同,如果不相同,返回false,退出循環。如果已經遍歷結束,那麼返回true。
如果判斷StringBuffer類的字符串str是否是迴文,代碼如下:
StringBuffer s1 =new StringBuffer(str);
rse();
if(ring()ls(ring()))
return true;
else
return false;
從以上代碼可以看到,因爲StringBuffer作爲可編輯字符串,所以提供了reverse()策略,把StringBuffer類的字符串內容反轉。在上述代碼中,把原來str的字符串內容保存在s1中,再判斷s1反轉後,兩個字符串是否相同。因爲String類覆蓋了equals策略,可以判斷兩個字符串內容是否相同。而StringBuffer類沒有覆蓋其父類Object類的equals策略,所以應用equals策略只能判斷兩個字符串對象是否是同一個對象,而不能判斷他們的內容是否相同。所以,要應用toString策略把兩個StringBuffer類的字符串先轉化爲String類的字符串,然後再比較內容是否相同。
2 兩種類型字符串比較
String和StringBuffer類的代碼如下,那麼輸入結果怎麼樣呢?
StringBuffer str1 = new StringBuffer("Hello!");
StringBuffer str2 = str1;
String str3 = new String(str1);
String str4 = str3;
nd("This is a StringBuffer!");
tln(str1+"n"+str2);
str3 = at("The string is too long.");
tln(str3+"n"+str4);
在以上代碼中Str1和str2指向同一個StringBuffer類的字符串,所以,當執行append函數時候,字符串本身發生變化,所以,輸出str1和str2結果是一樣的。String類的'兩個字符串連接的函數是concat,該函數的功能是返回一個新的字符串,反映兩個String類字符串的連接效果。在上述程序中把連接後的字符串重新賦值給str3,所以str3和str4輸出結果不一樣。通過以上分析,我們可以得到該程序的輸出結果如下所示。
Hello!This is a StringBuffer!
Hello!This is a StringBuffer!
Hello!The string is too long.
Hello!
3 總結
Java字符串類是Java中使用最多的類之一,String和StringBuffer他們都可以存儲和操作字符串。本文通過兩個實例,詳細給出了String類字符串和StringBuffer可編輯字符串在使用策略上的區別。
【參考文獻】
[1]蹇旭.探析Java中的字符串[J].科技風,2009(13).
[2]鄭霞,郭磊語言中字符串常量和變量的分析與比較[J].安陽師範學院報,2012(2).
[3]汪文.用JAVA小應用程序實現正則表達式下字符串的查找[J].九江職業技術學院學報,2002(2).