iT邦幫忙

2022 iThome 鐵人賽

DAY 25
0
Software Development

Java入門的30張門票系列 第 25

[Day25] 不同的String類別

  • 分享至 

  • xImage
  •  

今天要來介紹四種名字看起來超像但功能又不太一樣的String類別,話不多說直接開始ㄅ!

String 類別

之前在Day5有介紹過這個類別。它是不可變的(immutable)字串,也就是說一旦宣告就不能在原所在記憶體位置改變內容。

StringBuffer 類別

跟String類別不一樣的是,它是個可變(mutable)的字串,可以直接在原字串所在的記憶體位置改變字串內容,如果需要可以更改字串的內容,那麼就必須利用StringBuffer類別而不是用String。

StringBuffer sb = new StringBuffer() // 建立一個不包含任何字元的字串
StringBuffer sb1 = new StringBuffer(String str)  // 根據str的內容建立字串

既然是可以改變的,Java有提供幾種方法來改變字串。

append()

append()會在字串的最後加入資料,並且有多重定義的版本,可以傳入基本型別、String物件及其他有定義toString()方法的物件。

insert()

第一個參數是索引值,也就是將字串或字元加到指定的位置,如果指定的索引值超出長度會發生錯誤。

delete()

兩個參數分別是start起始值和end終止值,可以刪除從start的索引值開始到end-1之間的一段字串。

String str = "aa";
StringBuffer sb = new StringBuffer(str);
sb = sb.append('b');  // aab
sb = sb.insert(1, 'c');  // acab
sb = sb.insert(5, 'd');  // 超出長度,發生錯誤
sb = sb.delete(1, 3);  // ab

StringBuilder 類別

StringBuilder類別是JDK1.5的新類別,裡面API的方法跟StringBuffer一樣,StringBuffer和StringBuilder之間的主要區別在於StringBuilder的方法不是線程安全的也就是不是同步的,而StringBuilder的速度更快,所以在實作上,如果不考慮多執行緒同步的問題,會建議用StringBuilder來提升執行的效率。

StringTokenizer 類別

它可以把一個字串分成好幾個字串(token),java預設的分隔符號是空格("")、制表(\t)、换行(\n)和回車(\r),當然也可以自己設定想要使用的分隔符號,底下的例子就是使用"-"。

StringTokenizer st = new StringTokenizer("Nice to meet you");
while (st.hasMoreTokens()) {
    System.out.println(st.nextToken());
}

StringTokenizer st1 =  new StringTokenizer("Nice-to-meet-you","-");
while (st1.hasMoreTokens()) {
    System.out.println(st1.nextToken());
}

輸出結果如下:

Nice
to
meet
you
Nice
to
meet
you

上一篇
[Day24] 斷言 assertions
下一篇
[Day26] 現在到底幾點幾分 - Calendar
系列文
Java入門的30張門票30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言