Java之String類的使用細節

凌.風發表於2014-12-18
String類的特點:
    字串物件一旦被初始化就不會被改變,字串儲存在字串常量池中(字串緩衝區)。如果池中沒有就建立,如果有就直接拿過來用。
 程式碼驗證如下:
 
  String s = "abc";//在常量池中建立了一個字串物件
  String s1 = "abc";//true
//s與s1內容相同,地址相同
  System.out.println(s==s1);//true
  System.out.println(s==s1);//true
 
String s2 = new String("abc");//在堆記憶體中建立了兩個物件,一個new物件一個字串物件
//s與s2內同相同,地址不同
  System.out.println(s==s2);//false
  System.out.println(s==s2);//true  原因是String類中的equals複寫了String類中的equals建立了String類屬於自己的判斷字串物件是否相同的依據,其實就是比較字串的內容。
 
String s = new String();//等效於String s= "" 都是空字串,內容相同,但是不等效於String s = null;
 
 
 
 
按照物件導向的思想對字串功能進行分類
            思考思路:如果我們想要使用某種方法或說是功能來達到自己的目的,那麼就首先需要對這種方法進行查詢,看這種方法是否已經給我們封裝好了,例如:如果想要獲取字串的長度,那麼返回值必然是int,確定了返回值再想要找到方法就會很簡單了。那麼再思考的就是我們是否要給這個方法進行引數的傳遞,獲取長度其實就是物件直接呼叫方法就可以了,因此我們也可以確定,這個方法是不需要來進行引數傳遞的。經過以上方式的思考,我們很快就可以確定下來這個方法是哪個。如果這樣的思考之後,還沒有找到我們需要的方法,那麼有可能就需要我們自己進行封裝了。
 
以下為String類常用的一些方法,也是通過物件導向的思想來進行整理的。
如字串"string"
1,獲取
    1.1獲取字串中字元的個數(長度)。
            返回值int  方法名:length();
    1.2根據位置獲取字元。
            返回值char   方法名: charAt(int index);
    1.3根據字元獲取在字串中第一次出現的位置。
            返回值int     方法名:indexOf(int ch);
            返回值int     方法名:indexOf(int ch,int fromIndex);
            返回值int     方法名:indexOf(String str);
            返回值int     方法名:indexOf(String str,int fromIndex);
      1.4根據字串獲取在字串中第一次出現的位置。
            返回值int     方法名:lastIndexOf(int ch);
            返回值int     方法名:lastIndexOf(int ch,int fromIndex);
            返回值int     方法名:lastIndexOf(String str);
            返回值int     方法名:lastIndexOf(String str,int fromIndex);
      1.5根據字串獲取字串中的一部分字串,即子串。
            返回值String 方法名:subString(int beginIndex, int endIndex);      
            返回值String 方法名:subString(int beginIndex);      
 
2,轉換
        2.1將字串變成字串陣列(字串的切割)
            返回值String[] 方法名 split(String regex);//新增正規表示式的切割規則
        2.2將字串變成字元陣列。
            返回值char[]  方法名 toCharArray();
        2.3將字串變成位元組陣列
            返回值byte[]  方法名getBytes();
        2.4將字串中字母轉為大小寫字母
            返回值String  方法名toUpperCase();
            返回值String  方法名toLowerCase();
        2.5將字串中的內容進行替換
            返回值String  方法名replace(char oldChar,char newChar);//沒有oldChar則不改變
            返回值String  方法名replace(CharSequence target,CharSequence replacement);
            也可以理解為
            返回值String  方法名replace(String oldString,String newString);因為String類是Sequence的子類
        2.6去除字串中兩端的空格
            返回值String  方法名trim();
        2.7將字串進行連線
            返回值String  方法名concat(String s);
        2.8將基本資料型別轉換為字串型別
            返回值String  方法名ValueOf(基本資料型別);
        2.9將字元陣列轉化為字串
            可以使用構造方法String(char [] value);
            返回值String  方法名copyValueOf(char[] data)
3,判斷
    3.1兩個字串內容是否相同
            返回值boolean  方法名 equals(Object obj);
            返回值boolean  方法名equalsIgnoreCase(String str); //忽略大小寫比較字串內容是否相同。
    3.2字串中是否包含指定字串
            返回值boolean  方法名contains(String str);
    3.3字串是否以指定字串開頭,是否以指定字串結尾
            返回值boolean  方法名startsWith(String str);
            返回值boolean  方法名endsWith(String str);
4,比較
    4.1比較兩個字串的大小
            返回值int  方法名compareTo(String str);
 
 

相關文章