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);
通過Java程序抽取日志中的sql語句 http://www.linuxidc.com/Linux/2015-01/111347.htm
解密Java增強的泛型 http://www.linuxidc.com/Linux/2015-01/111360.htm
Java中介者設計模式 http://www.linuxidc.com/Linux/2014-07/104319.htm
Java 設計模式之模板方法開發中應用 http://www.linuxidc.com/Linux/2014-07/104318.htm
設計模式之 Java 中的單例模式(Singleton) http://www.linuxidc.com/Linux/2014-06/103542.htm
Java對象序列化 http://www.linuxidc.com/Linux/2014-10/107584.htm
大話設計模式(帶目錄完整版) PDF+源代碼 http://www.linuxidc.com/Linux/2014-08/105152.htm
Java中的函數傳遞 http://www.linuxidc.com/Linux/2014-11/109056.htm