Java基礎之Character、String、StringBuffer、StringBuilder總結

來源:互聯網
上載者:User

 

我們操作最多的資料就是文本,所以關於字串文本的內容顯得特別的重要。在這裡作一下總結。

跟字元有關的類如下:

 

一、Character 。Character 是對char的封裝對象,是對單個字元的操作。

二、String  。 String 對一串字元進行操作。不可變類。

1、String的定義

    String也是一種引用資料類型,但它又和一般的類有點區別。

package test;public class StringDemo { public static void main(String[] args) {  String str1 = new String("abc");                  //上面句相當於下面的這兩句。所以說上面這句建立了兩個String 對象。String str2 = "abc"是一種隱式的建立對象方式,是String 特有的。  String str2 = "abc";  String str3 = new String(str2);    System.out.println(str1 == str2);  System.out.println(str2 == str3);  System.out.println(str1 == str3);    System.out.println(str1.equals(str2));  System.out.println(str1.equals(str3));  System.out.println(str2.equals(str3)); }}輸出結果:falsefalsefalsetruetruetrue

 

2、String 的比較
Object的equal方法是比較兩個對象引用地址是否相等,按這個來說str1.equals(str2)等應該是false才對,但結果是true,這是因為String

類中重寫的equals方法,比較的是兩個對象裡面存的值。因為兩個值相等所以是true;而==則比較的是兩個對象的引用地址。這點和平時

有點不一樣需要注意。

3、String的一些常用方法

char charAt(int index)  //擷取某個點對應的字元

int compareTo(String otherString) //按字典順序比較大小 返回正數、負數或0   如"a".compareTo("c")=-2 "c".compareTo("a") = 2 其實就是Ascii碼比較,

從前面到後比較,當前面已經比較出大小,後面不再比較。

int indexOf(String str)  // 某一子串第一次出現的索引位置

int indexOf(String str ,int fromIndex)   //返回在此字串中第一次出現指定字元處的索引,從指定的索引開始搜尋。

int lastIndexOf(int ch) //返回指定字元在此字串中最後一次出現處的索引。

String subString(int  beginIncex,int endIndex) //截取子串

....更多方法,新查看API文檔

4、StringBuffer 與StringBuilder

 

三、StringBuffer 。StringBuffer 是安全執行緒的可變字元序列。

StringBuffer 上的主要操作是 appendinsert 方法,可重載這些方法,以接受任意類型的資料。每個方法都能有效地將給定的資料轉換成字串,

然後將該字串的字元追加或插入到字串緩衝區中。append 方法始終將這些字元添加到緩衝區的末端;而 insert 方法則在指定的點添加字元。

 

四、SringBuilder 。一個可變的字元序列。

此類提供一個與 StringBuffer 相容的 API,但不保證同步。該類被設計用作 StringBuffer 的一個簡易替換,用在字串緩衝區被單個線程使用的時候

(這種情況很普遍)。如果可能,建議優先採用該類,因為在大多數實現中,它比 StringBuffer 要快。

 

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

總結:在選擇哪種類型儲存字串時,我們要根據實際情況而定。如果字串很少被修改,而僅僅是被查看時用String;如果會被經常修改,則考慮使用StringBuffer

或者是StringBuilder,進一步判斷,如果使用的字串對象會被多線程訪問時則用StringBuilder,如果不會被多線程訪問,則用StringBuffer。因為線程同步判斷是

要消耗資源的,會使訪問速度變慢。

  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.