java String

String
常量池:虛擬機必須爲每個被裝載的類型維護一個常量池,就是該類型用到的常量的一個有序集合,包括直接常量和對其他類型,字段和方法的符號引用。
String常量和String對象
String str1="abc"; //可能會創建一個或者不創建對象,如果"abc"這個字符串在常量池中不存在,就會在常量池中創建一個Strin對象,然後將str1指向這個對象;如果在常量池中存在"abc",則將"abc"的地址指向str1。
String str2=new String("abc"); //至少會創建一個對象,也可能創建兩個對象。因爲用到了new關鍵字,肯定會在堆中創建一個str2的String對象,他的值是"abc"。同時如果這個字符串在常量池中不存在,則會在常量池中創建這個String對象"abc"。
String s1=new String("kill"); //在堆中創建s1對象,常量池中沒有"kill",創建常量池對象"kill"
String s2="kill";
System.out.println(s1);
System.out.println(s2);
System.out.println(s1==s2);//false 常量池的對象kill和堆中的對象kill
System.out.println(s1.intern()==s2); //true 字符串駐留 s1.intern()返回在常量池中kill的引用,所以與常量池中的所相等。
String s="q";
String ss=new String("q");
String sss=new String("q");
System.out.println(s==ss);//false 常量池的對象kill和堆中的對象kill
ss.intern(); //ss獲取常量池中對象引用
sss=sss.intern(); //sss獲取常量池中對象引用,並賦值給sss
System.out.println(s==ss);//false 只是調用,並沒有爲ss對象進行賦值
System.out.println(s==ss.intern()); //true
System.out.println(s==sss); //true
public native String intern(); //擴充常量池
//當一個String實例調用intern()方法時,程序會查找常量池中是否有相同Unicode的字符串常量,如果有,則返回常量池中該字符串的引用,如果沒有,則在常量池中創建一個Unicode等於該實例的字符串並返回它的引用;
String s=new String(); 等效於 String s="";
String源碼中無參構造器
public String(){
this.value="".value;
}
具體操作字符串
獲取字符串
獲取字符串長度 public int length(){return value.length}
根據位置獲取字符串 public char charAt(int index){if((index<0)||(index>=value.length)){throw new StringIndexOutOfBoundsException(index);}return value[index];}
根據字符獲取位置 int indexOf(int ch) int lastIndexOf(int ch)
獲取部分子串 String substring(int beginIndex,int endIndex) //[)
轉換字符串
將字符串變爲字符串數組 String[] split(String regex){return split(regex,0)}
分割字符串 String[] split(String regex,int limit) //regex爲字符串分割的標準,limit用來限制返回數組中元素的個數
將字符串變爲字符數組 toCharArray()
將字符串變爲字節數組 getBytes()
將字符串的字母轉換大小寫 toUppercase() toLowercase()
將字符串中的內容進行替換 String replace(char oldChar,char newChar)
將字符串兩端去空格 trim()
將字符串進行連接 concat(String str)
判斷字符串
兩個字符串內容是否相同 boolean equals(Object obj)
字符串中是否包含指定字符 boolean contains(String str)
字符串是否以指定字符開頭,結尾
startsWith(String prefix){return startsWith(prefix);}
endsWith(String suffix){return startsWith(suffix,value.length-suffix.value.length);}
字符串中某一下標的值是否是指定字符串 boolean startsWith(String prefix,int index)//比較原字符串下標之後的字符串與指定字符串是否相同
比較字符串
compareTo(String anotherString); //s.compareTo(ss); 比較s和ss的ASCll碼的差值,
//compareTo(Object obj)方法是Comparable接口中的方法,當需要對類的對象進行排序時,該類需要實現Comparable接口,必須重寫compareTo(T t)方法;String等類默認實現了該接口
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章