String類
String s1="mainsdui";
String s2="mainsdui";
? s1= "good";
System.out.println(s1);
System.out.println(s2);
輸出結(jié)果:good ? ? ??mainsdui
這是很簡單的
上面代碼中,創(chuàng)建s1時留储,jvm會在常量池中創(chuàng)建一個mainsdui字符串對象, 創(chuàng)建s2時,jvm會去常量池中搜索,此時常量池中有mainsdui,所以就不創(chuàng)建了,直接讓s2指向之前創(chuàng)建的mainsdui.當(dāng)執(zhí)行到最后一行時, jvm會在常量池中創(chuàng)建一個good, 然后讓s1指向這個good,而不是將常量池中的mainsdui修改為good,所以說常量池中的對象內(nèi)容是不可修改的探越。
輸出結(jié)果:true ? ? true ? ? ? false ? ?? true
注意:比較兩個字符是否一致最好使用equals方法
String s7 ="a";
String s8 ="b";
String s9 ="ab";
String s10 =s7+s8;//開辟新的內(nèi)存空間
Systrm.out.println(s9 == s10);
輸出結(jié)果false
/ /盡 量避免對String對象進(jìn)行頻繁的拼接操作
錯誤演示:
String s11 = " ? ";
for(int i=0;i<100;i++){
s11+=i;
}
System.out.println(s11);
輸出結(jié)果露戒,亂七八糟的數(shù)字// 如果要用建議使用StringBuffer StringBuilder
String類常用方法
1.char charAt(int index);獲取index位置的字符
2.boolean contains(CharSequence s)判斷字符串中是否包含某個字符串
3. boolean endsWith(String endStr);判斷是否是以某個字符串結(jié)尾
4. boolean equalslgnoreCase(String anotherString);忽略大小寫比較兩個字符串是否相等
5. byte[] getBytes():轉(zhuǎn)換成byte數(shù)組
6. int indexOf(String str);取得指定字符在字符串的位置
7. int indexOf(String str, int fromIndex);從指定的下標(biāo)開始取得指定字符在字符串的位置
8. int lastIndexOf(String str);從后面開始取得指定字符在字符串最后出現(xiàn)的的位置
9. int lastlndexOf(String str, int fromIndex);從后面開始指定的下標(biāo)開始取得指定字符在字符串的位置
10. int length();獲取字符串的長度
11. String replaceAll(String s1,String s2);替換字符串中的內(nèi)容
12. String[] split(String s);根據(jù)指定的表達(dá)式拆分字符串
13. boolean startsWith(String s);判斷是否是以某個字符串開始
14. String substring(int begin);根據(jù)傳入的索引位置截子串
15. String substring(int beginlndex, int endIndex);根據(jù)傳入的起始和結(jié)束位置截子串
16. char[] toCharArray();將字符串轉(zhuǎn)換為char數(shù)組
17. void toUpperCase();轉(zhuǎn)換為大寫
18. void toLowerCase();轉(zhuǎn)換為小寫
19. String trim();去除空格
20. String valueOf(Object obj;將其他類型轉(zhuǎn)換為字符串類型