Ch10 字元與字串 物件導向程式設計(II)
大綱 字元類別 字串類別 2019/1/1
Character字元類別 Java程式語言提供Character字元、String字串和StringBuffer字串緩衝器3種類別來處理字元資料,字串是0或多個循序的字元集合。http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Character.html 基本資料型態char宣告的變數和Character字元類別建立物件的內容都是字元,如果Java程式碼需要使用物件時,例如:使用Character物件的方法等,就需要使用Character類別建立字元物件。 2019/1/1
Character字元類別的建構子 Character字元類別的建構子Character()可以建立字元物件,如下所示: Character b = new Character(‘b’); 上述程式碼使用new運算子建立字元物件b,參數是字元文字值。 2019/1/1
Character字元類別的-方法 使用下表方法輸出成字串或轉換成基本資料型態的char,如下表所示: 2019/1/1
字元的比較 Java程式比較字元物件內容的相關方法說明,如下表所示: 2019/1/1
檢查字元內容-說明 Character類別提供類別方法檢查字元變數的值是否為大寫、小寫、空白、字母和數值等內容。 在Java程式需要使用類別名稱來呼叫這些方法,如下所示: System.out.println(Character.isUpperCase(a.charValue())); System.out.println(Character.isLowerCase(b)); 上述程式碼的a是字元物件,需要先使用charValue()方法轉換成字元變數,b是字元變數,然後使用Character類別的isUpperCase()和isLowerCase()方法來檢查字元變數的大寫或小寫。 2019/1/1
檢查字元內容-方法 2019/1/1
字元的數值轉換 Character類別提供類別方法將字元轉換成各種進位的數值,或是將各進位的數值轉換成對應的字元,相關方法如下表所示: 2019/1/1
範例1:字元物件與字元變數 class Ch02_01 { public static void main(String [] args) Character a = new Character('A'); Character b = new Character('B'); char c = 'C'; System.out.println("比較兩字元物件(0:相等 1:參數物件較大 -1:參數物件較小)"); System.out.println("a 與 b: " + a.compareTo(b)); // System.out.println(“a 與 c: “ + a.compareTo(c)); if (a.charValue() == c) System.out.println("a 與 c: 0"); if (a.charValue() > c) System.out.println("a 與 c: 1"); if (a.charValue() < c) System.out.println("a 與 c: -1"); } 2019/1/1
範例2:字元的數值轉換 class Ch02_02 { public static void main(String [] args) char a = 'h'; char b = 'x'; System.out.println("a字元的16進位值: " + Character.digit(a, 16)); System.out.println("值14的16進位的字元: " + Character.forDigit(14, 16)); System.out.println("a的無符號整數值: " + Character.getNumericValue(b)); } 2019/1/1
字串類別:String與StringBuffer Java字串就是String物件,提供String字串和StringBuffer字串緩衝區2種類別來處理字串資料。 在Java程式使用String類別建立的字串物件屬於唯讀字串(一旦物件內容設定,不能被更改,除非重新指定);StringBuffer字串緩衝區類別的字串物件能夠新增、插入和刪除字串內容。 2019/1/1
String字串類別 http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html Java可以直接使用字串文字值(一組字元集合使用「"」雙引號括起)來建立字串物件,如下所示: String str = "Java 2程式設計範例教本2e"; 上述程式碼將String類別當作資料型態來建立str字串物件,並且指定字串內容。 2019/1/1
String字串類別的建構子-過載建構子 Java提供數種String物件的建構子,可以使用new運算子建立String物件,如下表所示: 2019/1/1
範例3:利用不同的String建構子來建立字串物件 class Ch02_03 { public static void main(String [] args) char [] charArr = {'J', 'A', 'V', 'A', ' ', '2', ' ', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'm', 'i', 'n', 'g', '!'}; String str1 = "JAVA 2 Programming!"; String str2 = new String("JAVA 2 Programming!"); String str3 = new String(str1); String str4 = new String(charArr); System.out.println(str1); System.out.println(str2); System.out.println(str3); System.out.println(str4); System.out.println("str1 and str2: " + str1.equals(str2)); System.out.println("str1 and str3: " + str1.equals(str3)); System.out.println("str1 and str4: " + str1.equals(str4)); } 2019/1/1
字串的比較-1 String物件的字串可以一個字元一個字元比較字元的內碼值,直到分出大小為止。其相關方法如下表所示: 2019/1/1
字串的比較-2 2019/1/1
字串的比較-3 以比較運算子「==」判斷兩個String物件時,是判斷兩者是否指向相同的參考。 String類別的equals()方法,其功能是比較兩個String物件的內容而不是參照。 字串一.equals(字串二) 如果要忽略英文字母的大小寫,可以使用equalsIgnoreCase()方法。 2019/1/1
字串長度與大小寫轉換 String物件提供方法取得字串長度和進行英文字串的大小寫轉換,相關String物件的方法,如下表所示: 2019/1/1
子字串與字元搜尋-字元搜尋 String物件提供多種功能強大的字元或子字串搜尋方法,可以在字串中搜尋所需的字元或子字串,相關的搜尋方法,如下表所示: 2019/1/1
子字串與字元搜尋-子字串搜尋 String物件相關子字串搜尋方法,如下表所示: 2019/1/1
子字串和字元處理 String物件提供方法取代和取出字串中所需的字元和子字串,相關方法如下表所示: 2019/1/1
字串的連接 當兩個String物件要相連接的時候,可以使用『+』 若字串的尾端要再接一個字串,可以使用『+=』 str1 = str2 + str3; 若字串的尾端要再接一個字串,可以使用『+=』 str1 += “ABC”; 2019/1/1
1.使用concat()方法,並不會改變原來的物件內容 範例4:String字串連接 class Ch02_04 { public static void main(String [] args) { String str1 = "ABC"; String str2 = "123"; String str3 = "!@#"; String str4 = str1 + str2; String str5 = str1.concat(str2); System.out.println("str1 : " + str1); System.out.println("str2 : " + str2); System.out.println("str3 : " + str3); System.out.println("str4 = str1+str2: " + str4); System.out.println("str5 = str1.concat(str2) : " + str5); str3 += "$%^"; System.out.println("str3 += $%^ : " + str3); } 1.使用concat()方法,並不會改變原來的物件內容 2.String和StringBuffer最大不同,String物件的內容一旦設定,不會變!可是,str3為何更改了?其實,+和+=是透過StringBuffer物件來執行 2019/1/1
手、腦運動時間1 請設計字串處理方法(嘗試:1使用String和StringBuffer物件相同功能的方法;2不使用String和StringBuffer物件的方法) Int strLen(String): 取得字串長度 String strInsert(String1, String2, int):插入字串,將String2插入String1的位置int String strReplace(String1, String2, int):取代字串,將String1位置int開始取代成String2 提示:將參數字串先轉換成陣列,即使用一維字元陣列儲存字串內容,然後使用走訪和陣列處理建立字串處理的類別方法 2019/1/1
StringBuffer字串緩衝區類別 String字串類別建立的String物件不能更改內容,只能使用指令敘述重新指定全新的字串內容。 但是,StringBuffer字串緩衝區類別建立的StringBuffer物件就可以直接修改原字串的內容。 2019/1/1
StringBuffer字串緩衝區類別的建構子-過載建構子 StringBuffer字串緩衝區類別需要使用new運算子建立物件,StringBuffer物件的建構子,如下表所示: 2019/1/1
StringBuffer字串緩衝區類別的建構子-方法 StringBuffer字串緩衝區類別建立的StringBuffer物件除了可以使用length()方法取得字串長度外,還可以使用capacity()方法取得字串容量,相關方法如下表所示: 2019/1/1
範例5:StringBuffer物件的內容與容量 class Ch02_05 { public static void main(String [] args) { StringBuffer str1 = new StringBuffer("ABCDE"); System.out.print("原始資料 "); showSB(str1); System.out.print("設定最小容量為150 "); str1.ensureCapacity(150); System.out.print("設定最小容量為30 "); str1.ensureCapacity(30); System.out.print("設內容長度為3 "); str1.setLength(3); } static void showSB(StringBuffer sb) { System.out.println("*****************************"); System.out.println("字串物件內容: " + sb + " 內容長度 : " + sb.length() + " 容量 : " + sb.capacity()); 1.ensureCapacity()只可以越設越大 2.如果,設定內容長度較字串物件內容實際長度小時,會造成部份資料被刪除 2019/1/1
StringBuffer物件的新增和反轉 2019/1/1
StringBuffer物件的插入、刪除和取代-1 2019/1/1
StringBuffer物件的插入、刪除和取代-1 2019/1/1