1. 程式人生 > 其它 >String、StringBuilder、StringBuffer——JavaSE基礎

String、StringBuilder、StringBuffer——JavaSE基礎

String、StringBuilder、StringBuffer

  • String不可變

  • StringBuilderStringBuffer均可變

  • StringBuilder執行緒不安全,效率高,常用

  • StringBuffer執行緒安全,效率低

String類相關方法

  1. String類的下述方法能建立並返回一個新的String物件: concat()、 replace()、substring()、 toLowerCase()、 toUpperCase()、trim()。

  2. 提供查詢功能的有關方法: endsWith()、 startsWith()、 indexOf()、lastIndexOf()。

  3. 提供比較功能的方法: equals()、equalsIgnoreCase()、compareTo()。

  4. 其它方法: charAt() 、length()

StringBuilder、StringBuffer相關方法

  1. append()、reverse()、setCharAt()、insert()、

insert()方法返回的是this,因此可以鏈式呼叫sb.insert(1,'我').insert(3,'愛').insert(5,'你')

String與StringBuilder效率比對

public class Test {
    public static void main(String[] args) {
        /**使用String進行字串的拼接*/
        String str8 = "";
        //本質上使用StringBuilder拼接, 但是每次迴圈都會生成一個StringBuilder物件
        long num1 = Runtime.getRuntime().freeMemory();//獲取系統剩餘記憶體空間
        long time1 = System.currentTimeMillis();//獲取系統的當前時間
        for (int i = 0; i < 5000; i++) {
            str8 = str8 + i;//相當於產生了10000個物件
        }
        long num2 = Runtime.getRuntime().freeMemory();
        long time2 = System.currentTimeMillis();
        System.out.println("String佔用記憶體 : " + (num1 - num2));
        System.out.println("String佔用時間 : " + (time2 - time1));
        /**使用StringBuilder進行字串的拼接*/
        StringBuilder sb1 = new StringBuilder("");
        long num3 = Runtime.getRuntime().freeMemory();
        long time3 = System.currentTimeMillis();
        for (int i = 0; i < 5000; i++) {
            sb1.append(i);
        }
        long num4 = Runtime.getRuntime().freeMemory();
        long time4 = System.currentTimeMillis();
        System.out.println("StringBuilder佔用記憶體 : " + (num3 - num4));
        System.out.println("StringBuilder佔用時間 : " + (time4 - time3));
    }
}