1 / 29

第 6 章

第 6 章. 字 串 認識字串( String ) 字串進階運用. String 類別. String text = " 字串的使用 "; System.out.println(text);. 在某些程式語言中,字串是以字元陣列的方式存在 在 Java 中字串不僅僅是字元陣列,而是 String 類別的一個實例( Instance ). String 類別. String msg = " 哈囉! "; msg = msg + "Java 程式設計! "; System.out.println(msg);. 字串必須使用 "" 來包括您的文字

edison
Download Presentation

第 6 章

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第6章 字 串 認識字串(String) 字串進階運用

  2. String類別 String text = "字串的使用"; System.out.println(text); 在某些程式語言中,字串是以字元陣列的方式存在 在Java中字串不僅僅是字元陣列,而是String 類別的一個實例(Instance)

  3. String類別 String msg = "哈囉!"; msg = msg + "Java程式設計!"; System.out.println(msg); 字串必須使用""來包括您的文字 字串的字元是使用Unicode字元來建構 字串以 '+' 互相串接

  4. String類別 String text = "hello"; System.out.println("字串內容: " + text); System.out.println("字串長度: " + text.length()); System.out.println("等於hello? " + text.equals("hello")); System.out.println("轉為大寫: " + text.toUpperCase()); System.out.println("轉為小寫: " + text.toLowerCase()); 字串在Java中以String類別的一個實例存在

  5. String類別 將輸入的字串轉換為整數、浮點數等 指定的字串無法剖析為指定的資料型態數值,則會發生NumberFormatException例外

  6. String類別 String str = new String("caterpillar"); String str = "caterpillar"; 以配置物件的觀念來宣告字串 兩種宣告方式是有所差別的

  7. String類別 使用索引取得字元的相關方法

  8. String類別 String[] filenames = {"caterpillar.jpg", "cater.gif", "bush.jpg", "wuwu.jpg", "clockman.gif"}; System.out.print("過濾出jpg檔案: "); for(int i = 0; i < filenames.length; i++) { if(filenames[i].endsWith("jpg")) { System.out.print(filenames[i] + " "); } } System.out.println(""); endsWith()方法

  9. 不可變(immutable)字串 String str = "Just"; str = "Justin"; 一個字串物件一旦被配置,它的內容就是固定不可變的(immutable) 不要以為下面的陳述就是改變一個字串物件的內容

  10. 不可變(immutable)字串 String str1 = "flyweight"; String str2 = "flyweight"; System.out.println(str1 == str2); 對於一些可以共享的字串物件,會先在String池中查找是否存在相同的String內容 當您直接在程式中使用""來包括一個字串時,該字串就會在String池中

  11. 不可變(immutable)字串 • String的intern()方法 • 如果池(Pool)中已經包括了相同的String物件(相同與否由equals()方法決定),那麼會從池中返回該字串 • 否則原String物件會被加入池中,並返回這個String物件的參考

  12. 不可變(immutable)字串 String str1 = "fly"; String str2 = "weight"; String str3 = "flyweight"; String str4 = null; str4 = str1 + str2; System.out.println(str3 == str4); str4 = (str1 + str2).intern(); System.out.println(str3 == str4);

  13. 不可變(immutable)字串

  14. 不可變(immutable)字串 String str1 = new String("caterpillar"); String str2 = new String("caterpillar"); System.out.println(str1 == str2); String str1 = new String("caterpillar"); String str2 = new String("caterpillar"); System.out.println(str1.equals(str2)); 不可用 == 比較字串的字元內容是否相同 要比較兩個字串物件的字元值是否相同,必須使用equals()方法

  15. StringBuilder類別 • 使用'+'來串接字串以達到附加新字元或字串的目的,但'+'會產生一個新的String實例 • 不建議使用'+'來進行字串的串接 • 建議先以StringBuilder串接字串,最後再以toSTring()方法生成最終的字串 • 垃圾減量、提昇效能

  16. StringBuilder類別 String text = ""; long beginTime = System.currentTimeMillis(); for(int i = 0; i < 10000; i++) text = text + i; long endTime = System.currentTimeMillis(); System.out.println("執行時間:" + (endTime - beginTime)); StringBuilder builder = new StringBuilder(""); beginTime = System.currentTimeMillis(); for(int i = 0; i < 10000; i++) builder.append(String.valueOf(i)); endTime = System.currentTimeMillis(); System.out.println("執行時間:" + (endTime - beginTime));

  17. 命令列引數 String[] args

  18. 命令列引數 public static void main(String[] args) { System.out.print("讀入的引數: "); for(int i = 0; i < args.length; i++) System.out.print(args[i] + " "); System.out.println(); } java CommandLineArg -file student.dat 讀入的引數: -file student.dat 在main()的參數列撰寫String[] args,目的就是用來接受一個字串陣列

  19. 分離字串 String[] fakeFileData = { "justin\t64/5/26\t0939002302\t5433343", "momor\t68/7/23\t0939100391\t5432343" }; for(String data : fakeFileData) { String[] tokens = data.split("\t"); for(String token : tokens) { System.out.print(token + "\t| "); } System.out.println(); } 使用String的split()

  20. 使用正則表示式(Regular Expression) matches()、replaceAll()等方法時使用 Java在J2SE 1.4之後開始支援正則表示式 可以在API文件的java.util.regex.Pattern類別中找到支援的正則表示式相關資訊

  21. 使用正則表示式 幾個常用的字元比對符號

  22. 使用正則表示式 String text = "abcdebcadxbc"; String[] tokens = text.split(".bc"); for(String token : tokens) { System.out.print(token + " "); } System.out.println(); tokens = text.split("..cd"); for(String token : tokens) { System.out.print(token + " "); } System.out.println();

  23. 使用正則表示式 Character class

  24. 使用正則表示式 Greedy quantifiers

  25. Pattern、Matcher 將正則表示式視為一個物件來重複使用,可用Pattern的靜態方法compile()進行編譯 compile()方法會傳回一個Pattern的實例,這個實例代表您的正則表示式

  26. Pattern、Matcher String phones1 = "Justin 的手機號碼:0939-100391\n" + "momor 的手機號碼:0939-666888\n"; Pattern pattern = Pattern.compile(".*0939-\\d{6}"); Matcher matcher = pattern.matcher(phones1); while(matcher.find()) { System.out.println(matcher.group()); } String phones2 = "caterpillar 的手機號碼:0952-600391\n" + "bush 的手機號碼:0939-550391"; matcher = pattern.matcher(phones2); while(matcher.find()) { System.out.println(matcher.group());

  27. Pattern、Matcher String text = "abcdebcadxbc"; Pattern pattern = Pattern.compile(".bc"); Matcher matcher = pattern.matcher(text); while(matcher.find()) { System.out.println(matcher.group()); } System.out.println();

  28. 習題:阿拉伯數字換轉成國字 輸入阿拉伯數字,例如2345,將之轉換成貳仟參佰肆拾伍

  29. 習題:阿拉伯數字金額換轉成國字金額 • 輸入阿拉伯數字金額,將之轉換成國字金額輸出 • 例: • 12,345 • 壹萬貳仟參佰肆拾伍 • 例: • 10023 • 壹萬零貳拾參

More Related