Java中String類有一個非常重要的特性:不可變(immutable)。簡單來說,就是一旦創建了一個字元串對象,就無法更改它的內容。因為每次字元串內容的更改都會創建一個新的字元串對象,這樣就會導致頻繁的對象創建和垃圾回收,對應用的性能造成很大的影響。
一、StringBuilder類的介紹
StringBuilder類是Java提供的用於字元串操作的工具類。與String不同的是,StringBuilder類的實例內容可以改變,而且其操作是非常高效的。可以將StringBuilder看作是一個可變的字元序列,可以通過它進行字元串的追加、插入、刪除等操作,如果一次性需要進行多次字元串拼接,建議使用StringBuilder。
二、StringBuilder與String的性能比較
下面通過一組程序來比較使用String和StringBuilder進行字元串拼接的性能差異:
public class StringTest { public static void main(String[] args) { long start = System.currentTimeMillis(); String s1 = ""; for (int i = 0; i < 10000; i++) { s1 = s1 + i; } long end = System.currentTimeMillis(); System.out.println("Using String cost " + (end - start) + "ms"); start = System.currentTimeMillis(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < 10000; i++) { sb.append(i); } end = System.currentTimeMillis(); System.out.println("Using StringBuilder cost " + (end - start) + "ms"); } }
運行結果如下:
Using String cost 1316ms Using StringBuilder cost 1ms
可以看到,使用String進行字元串拼接需要1316ms,而使用StringBuilder僅需要1ms。顯然,使用StringBuilder的性能要優於String,尤其是在需要多次字元串拼接的情況下。
三、StringBuilder的常用方法
StringBuilder的常用方法如下:
- append(String str): 將指定的字元串追加到此字元序列。
- insert(int offset, String str): 將指定的字元串插入此字元序列中。
- delete(int start, int end): 移除此序列的子字元串中的字元。
- deleteCharAt(int index): 移除此序列指定位置上的字元。
- replace(int start, int end, String str): 使用指定的字元串替換此序列的子字元串中的字元。
- reverse(): 將此字元序列用其反轉形式取代。
下面通過實例來演示這些方法的使用:
public class StringBuilderTest { public static void main(String[] args) { StringBuilder sb = new StringBuilder("hello"); System.out.println(sb.toString()); //hello sb.append(" world"); System.out.println(sb.toString());//hello world sb.insert(5, ","); System.out.println(sb.toString()); //hello, world sb.delete(5, 6); System.out.println(sb.toString()); //hello world sb.deleteCharAt(5); System.out.println(sb.toString()); //helloworld sb.replace(5, 8, "java"); System.out.println(sb.toString()); //hellojava sb.reverse(); System.out.println(sb.toString()); //avajolleh } }
運行結果如下:
hello hello world hello, world hello world helloworld hellojava avajolleh
四、總結
本文介紹了Java中StringBuilder類的使用方法,以及與String進行字元串拼接的性能比較。在實際開發中,如果需要多次進行字元串拼接操作,建議使用StringBuilder類,其性能遠遠高於String對象拼接。
原創文章,作者:FBJGP,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/330216.html