String,StringBuilber,StringBuffer 區別


String,StringBuilber,StringBuffer 區別
 
String和StringBuilder的效率對比
StringBullder和StringBuffer的效率對比
 
String和StringBuilder的本質區別
        -- String是一個不可改變的字符序列
public class StringDemo {
    public static void main(String[] args) {
        //字符串不可改變字符序列
        //String類比較特殊,直接寫一個雙引號,實際上創建了一個字符串對象,
        // 如何校驗,s打點調方法,證明它是一個對象
        String s = "ABC";
        //s又等於了一次雙引號,實際記錄一個新的地址值,
        s = "BCD";
    }
}
        --StringBuilder是一個可以改變的字符序列,字符串緩沖區            
public class StringBullderDemo {
    public static void main(String[] args) {
        //創建了一個StringBuilder對象,存入了一串字符序列
        StringBuilder sb = new StringBuilder("aaabbbccc");
        // sb.delete()刪除索引位置上的元素
        sb.delete(1,3);
        System.out.println(sb);
        //abbbccc
    }
}

  

字符串拼接使用誰?
String = 23958毫秒
StringBuilder = 24毫秒
使用StringBuilder效率比String高
public class stringVSStringBuilder {
    public static void main(String[] args) {
       /*
        第一次結果:24毫秒
       long start = System.currentTimeMillis();
        StringBuilder sb = new StringBuilder("");
        for (int i = 0; i <100000 ; i++) {
            sb.append(i);
        }
        long end = System.currentTimeMillis();
        System.out.println(sb);
        System.out.println(end-start);*/
        
       //第二次結果23958
        long start = System.currentTimeMillis();
        String s = "";
        for (int i = 0; i < 100000; i++) {
            s += i;
        }
        long end = System.currentTimeMillis();
        System.out.println(s);
        System.out.println(end - start);
    }
}

  

String在堆內存中的解析圖
 
StringBullder和StringBuffer的區別
相同點:兩者方法基本一致,
不同點:
            StringBuffer是JDK1.0出現的,多線程安全,效率低,但同步
            StringBuilder是JDK1.5出現的,線程不安全,效率快,不同步的(推薦Dao層的sql語句拼接,因為Dao數據訪問層一般都是單線程執行)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM