1.創建對象
對于java程序中的字符串直接常量,JVM會使用一個字符串池來保存它們。當第一次使用某個字符串直接常量時,JVM會將它放入字符串池中進行緩存。在一般情況下,字符串池中的字符串對象不會被垃圾回收。當程序再次需要使用該字符串時,無需重新創建一個新的字符串就可以直接讓引用變量直接指向字符串中已有的字符串。而使用new操作創建的字符串對象不指向字符串池中的對象,但是可以使用intern()方法使其指向字符串池中的對象。
public class StringDemo1 {
public static void main(String[] args){
String str1 ="abc";
String str2 ="abc";
String str3 =new String("abc");
System.out.println(str1==str2);//true
System.out.println(str1==str3);//false
}
}
常見問題
String str3 =new String("abc");
創建了幾個對象?
答:兩個
String str ="ab"+"cd";
創建了幾個對象?
答:一個。"ab"和"cd"都是常量被放在字符串池中。因此只創建了一個abcd字符串池中并將字符串abcd保存在字符串池中。
但是有一種情況需要引起我們的注意:
將上面的代碼稍加改變看看會出現什么情況。
2.字符串方法
獲取方法
•int length()
•char charAt(int index)根據位置獲取某個字符
•int indexOf(int ch) 返回的是ch在字符串中第一次出現的位置
•int indexOf(int ch,int fromIndex)從fromIndex指定位置開始,獲取ch在字符串中第一次出現的位置
•int indexOf(String str)
•int indexOf(String str,int fromIndex)
•int lastIndexOf(int ch)
判斷方法
•boolean contains(String str) 另一種判斷方法:if(str.index(str)!=-1)
•boolean startsWith(String str)
•boolean endsWith(String str)
•bolean isEmpty(String str)
•boolean equals(String str)
•boolean equalsIgnoreCase(String str);
轉換方法
•將字符數組轉換為字符串
構造函數
1.String(char[] chs)
2.String(char[] chs,offset,count)將字符數組中的一部分轉成字符串。
靜態方法
1.static String copyValueOf(char[] chs)
2.static String copyValueOf(char[] chs,int offset,int count)
3.static String valueOf(char[] )
4.static String valueOf(char[] chs,int offset,int count)
•將字符串轉換成字符數組
char[] toCharArray
•將字符數組轉換成字符串
•將字符串轉換成字節數組
byte[] toBytes
替換方法
String replace(olderStr,newStr)
切割方法
String split(regex)
獲取子串[編輯分類]
String subString(begin)
String subString(begin,end)包含頭不包含尾
將字符串轉換成大小寫Android(10)
String toUpperCase()
String toLowerCase()
將字符串兩端的空格去除
String trim()
對兩個字符串進行自然順序的比較
int compareTo(String str)
3.String 練習
1.字符串翻轉
新聞熱點
疑難解答