Java中的String、StringBuffer以及StringBuilder的用法和區別

來源:互聯網
上載者:User

標籤:

String

  String的構造方式有n種(據說n==11),常見的例舉一二:

// 1String s1 = "hello world";// 2String s2 = new String("hello world");// 3char[] a = {‘h‘, ‘e‘, ‘l‘, ‘l‘, ‘o‘};String s3 = new String(a, 1, 3);  // start length // 4String s4 = "hello world";String s5 = new String(s4);  // cloneString s6 = s4; // reference

  String類常用方法:

String s = "hello world";// toArraychar[] a = s.toCharArray();// charAtchar b = s.charAt(0);// get lengthint len = s.length();// compareint c = s.compareTo("hello");  // 返回字元差boolean f = s.equals("hello");  boolean g = s == "hello"; // 地址層面的比較// move blankString h = s.trim();// cut and addString d = s.concat(" i love you"); // hello world i love youString j = s + " i love you";String e = s.substring(1, 3); //out el startIndex endIndex
// int(or other types) -> Stringint a = 100;String s = String.valueOf(a);
StringBuffer & StringBuilder

  因為String對象是不可變的,每次操作都會產生一個新的String對象,所以如果要修改字串,就要用StringBuffer和StringBuilder。

StringBuffer s = new StringBuffer("hello world");// deletes.delete(0, 6); // world start end// reverses.reverse();  // dlrow// appends.append(" world"); // dlrow world// inserts.insert(0, 100); // 100dlrow world// replaces.replace(0, 3, "hello"); // hellodlrow world // setCharAts.setCharAt(0, ‘d‘);  // dellodlrow world // String <-> StringBufferString a = s.toString();StringBuffer b = new StringBuffer(a);
 進階比較

  String和StringBuffer以及StringBuilder最主要的區別當然不是能不能修改那麼簡單。

  既然已經有了String類,為什麼還要StringBuffer和StringBuilder?

  String是字串常量,但是它具有不可變性,就是一旦建立,對它進行的任何修改操作都會建立一個新的字串對象。StringBuffer 字串可變數,是安全執行緒的,和StringBuilder類提供的方法完全相同。如果查看java的原始碼(即java安裝目錄的src.zip檔案),就會發現它和StringBuilder類的方法的區別就是,在每個方法前面添加了"synchronized",保證其是安全執行緒的。StringBuilder 字串可變數,是線程不安全的。在java API中指明:這個類是在JDK 5才開始加入的,是StringBuffer的單線程等價類別。(其他兩個String和StringBuffer類,都是JDK 1.0開始)

  多線程的情況下才需要考慮安全執行緒問題。比如一個 StringBuilder ,可能被多個線程訪問,那麼如果沒有 synchronized 的話,第一個線程改變了其值,之後又有第二個線程改變了它的值。當切換回第一個線程時,讀到的就是第二個線程修改後的值了。 如果不考慮多線程,StringBuilder 比StringBuffer要快。

 

  

Java中的String、StringBuffer以及StringBuilder的用法和區別

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.