JDK學習筆記18——String1_String的簡介以及常見方法

最近在看JAVA教學的視頻,覺得老師講的很好,同時借用源代碼還有筆記來撰寫本系列博客,記錄自己的學習內容,同時也供看到的人學習。

本篇還有接下來的幾篇均要介紹一個非常重要的類:String類。

String就是字符串類,其字符串是不可變的序列。關於String的內容主要就是一個有一個的方法,所以本篇主要以一個代碼片來體現它的幾種常用的方法,每個方法後面的註釋都是其解釋,有的來自於JDK官方解釋,要仔細閱讀:


/**
 * String:不可變字符序列!
 *
 */
public class TestString {
	public static void main(String[] args) {
		String str = new String("abcd");
		String str2 = new String("abcd");
		System.out.println(str.charAt(2));
		System.out.println(str2.equals(str));   //equals的源碼裏面如果兩者不是指向同一個對象那麼就比較具體內容,如果內容完全一樣也是返回true。
		System.out.println(str2==str);   //不是指向同一個內存首地址(引用的值不同,所以false)

		String str3 = "def";   //str3,str4指向常量池的同一個對象,地址相同,內容也相同
		String str4 = "def";
		System.out.println(str3.equals(str4));
		System.out.println(str3==str4);
		
		
		System.out.println(str3.indexOf("y"));     //源碼:public int indexOf(int ch),返回參數字符在String中的索引位置,越界、沒有該字符則返回-1.
		String s = str3.substring(0);   //源碼:public String substring(int beginIndex),返回一個字符串,從開始索引的字符開始一直到末尾。
		System.out.println(s);
		String str5 = str3.replace('e', '*');      //將老的字符換成新的字符~JDK說明:返回一個新的字符串,它是通過用 newChar 替換此字符串中出現的所有 oldChar 得到的。 如果 oldChar 在此 String 對象表示的字符序列中沒有出現,則返回對此 String 對象的引用。否則,創建一個新的 String 對象,它所表示的字符序列除了所有的 oldChar 都被替換爲 newChar 之外,與此 String 對象表示的字符序列相同。 
		System.out.println(str5);
		
		String str6 = "abcde,rrtt,cccee";
		String[] strArray = str6.split(",");   //split:切割;按照參數字符將相應的字符串進行切割,返回一個字符串數組
		for(int i=0;i<strArray.length;i++){
			System.out.println(strArray[i]);
		}
		String str7 = "  aa  bb  ";
		String str77 = str7.trim();   //去除首尾空格
		System.out.println(str77.length()); 
		char[] ss = str77.toCharArray();    //這個方法也很常用的,將字符串轉換爲一個對應的字符數組。
		
		System.out.println("Abc".equalsIgnoreCase("abc"));   //忽略大小寫去比較兩個字符串是否相等。
		System.out.println("Abcbd".indexOf('b')); 
		System.out.println("Abcbd".lastIndexOf('b'));    //從後往前找,輸出第一個找到的參數字符的索引號
		System.out.println("Abcbd".startsWith("Ab"));   //判斷是否以Ab開頭。
		System.out.println("Abcbd".endsWith("bd"));   //判斷是否以bd結尾。
		System.out.println("Abcbd".toLowerCase());    //轉爲小寫,新建一個字符串,存起來,這是由於String爲不可變字符序列,要做什麼更改都是複製到一個新字符串。
		System.out.println("Abcbd".toUpperCase()); 
		
		//常見的拼字符串代碼,new出過多對象,浪費內存空間
		String gh =new String( "a");    //見下面內存圖,此處“a”是一個對象,new String又是一個對象,所以此條語句產生了兩個對象
		for (int i = 0; i < 3; i++) {   //每次循環gh不斷指向一個新的字符串,new出一個新的字符串
			gh = gh + i;   //進行的是並置運算。
		}
		System.out.println(gh); 	
	}
}
關於上述代碼片最後一段的內存分析圖:





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章