Download
slide1 n.
Skip this Video
Loading SlideShow in 5 Seconds..
Java 系列概論 網路入門程式 Java System Concepts and Network Programming 賈蓉生 胡大源 林金池 編著 PowerPoint Presentation
Download Presentation
Java 系列概論 網路入門程式 Java System Concepts and Network Programming 賈蓉生 胡大源 林金池 編著

Java 系列概論 網路入門程式 Java System Concepts and Network Programming 賈蓉生 胡大源 林金池 編著

207 Views Download Presentation
Download Presentation

Java 系列概論 網路入門程式 Java System Concepts and Network Programming 賈蓉生 胡大源 林金池 編著

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. Java系列概論 網路入門程式 Java System Concepts and Network Programming 賈蓉生 胡大源 林金池 編著

  2. 第一章導讀(Introduction) 1-1 簡介 1-2 本書主要內容 1-3 本書編著特色 1-4 光碟使用

  3. 1-1 簡介 • 本書是這一系列叢書的第二冊,以初學入門觀點撰寫,內容從Java基礎程式到網路程式,期使一位完全沒有接觸過Java的讀者,從陌生到熟練網路程式。

  4. 1-2 本書主要內容 • 第一篇 Java基礎概念(Basic Concepts) • 第二篇 網路串流(Data Stream in Network) • 第三篇 網路群播(Multi Broadcast) • 第四篇 圖型介面(GUI)與網路應用

  5. 1-3 本書編著特色 • (1) 輕鬆入門:本書以Java初學入門觀點切入網路程式設計,配合範例輕鬆解說每一指令與原始類別之用法、輕鬆入門。 • (2) 熟練實作:任何學習重點都搭配範例探討並實作,完全剖析Java網路程式。 • (3) 問題導向:協助讀者提出問題,解決問題,本書編輯問題339則(其中165則範例、174則習題)。 • (4) 原文接軌:編輯中英文索引751個(如附錄E、F),已涵蓋所有Java有關網路程式之中英文專有名詞,足夠讓讀者儲備未來閱讀原文書籍或期刊的能力。

  6. 1-4 光碟使用 • 本書隨書附光碟一片,內容有Java安裝程式(System)、範例應用程式(Program);另於出版書局附教學光碟一片,內容有教學投影(Ppt)、習題解答(Ex)、Java安裝程式(System)、範例應用程式(Program)。 • 1、Java安裝程式(System):置於光碟目錄System內,下載自昇陽(SUN) 最新6.0 Java安裝程式,讀者可依附錄A內容安裝Java。 • 2、範例應用程式(Program):置於光碟目錄Program內,配合各章節範例執行賓作。 • 3、教學投影片(Ppt):置於教學光碟目錄Ppt內,以Power Point 依本書各章節內容製作,用於堂課投影教學。 • 4、習題解答(Ex):置於教學光碟目錄Ex內,列出本書各章習題之解答。

  7. 第一篇 Java基礎概念(Basic Concepts)

  8. 第二章物件概念(Object Concepts) 2-1 簡介 2-2類別程序 2-3 新物件之產生 2-4 新物件之使用 2-5 區塊(Block) 2-6生存變數(Instance Variable) 2-7 類別變數(Class Variables) 2-8 習題(Exercises)

  9. 2-1 簡介 • Java是物件導向電腦程式語言(Object Oriented Language),在Java環境中,一個類別程序(Class Procedure) 就是一個物件。

  10. 2-2類別程序 • 一組具有某功能的程式碼是謂 “類別程序(Class Procedure)”。 • 特徵有:(1) 以 “class” 作前置提示;(2) 有類別名稱,本例是Mynumber;(3) 有功能意義,本例可於變數number儲存一個整數;(4) 使用大括號 “{ }” 作為區塊範圍。

  11. 2-3 新物件之產生 • 內建資料型態(Built Data Types) • 建構資料型態(Constructed Data Types)

  12. 2-4 新物件之使用 • 一旦新物件順利產生,即可依其特性參與程式執行

  13. 範例1:設有檔案Ex02_4.java,其功能為解釋主體類別程序之地位、與主導複製及使用檔案內其他類別程序產生的新物件。範例1:設有檔案Ex02_4.java,其功能為解釋主體類別程序之地位、與主導複製及使用檔案內其他類別程序產生的新物件。 • 01 class Mynumber { • 02 int number; • 03 } • 04 class Ex02_4 { • 05 public static void main(String[] args) { • 06 Mynumber a= new Mynumber(); • 07 a.number= 10; • 08 System.out.println("a.number= "+a.number); • 09 } • 10 }

  14. 2-5 區塊(Block) • Java程式是以區塊(Block) 為組織基礎單位,每一區塊單位以大括號涵蓋其範圍,各區塊彼此形成上下隸屬、左右同儕的關係。 • 外部區塊為上司,內部區塊為下屬,平輩而互不隸屬的區塊是為同儕。

  15. 範例2:設有檔案Ex02_5_1.java,其功能為解釋系統為了節省時間與空間,每一區塊並非隨時都存在的,只有當被執行時才存在。範例2:設有檔案Ex02_5_1.java,其功能為解釋系統為了節省時間與空間,每一區塊並非隨時都存在的,只有當被執行時才存在。 • 01 class Ex02_5_1 { • 02 public static void main(String[] args) { • 03 { int a = 3; • 04 System.out.println("Block A and a = " + a); • 05 } • 06 { int b = 5; • 07 System.out.println("Block B and b = " + b); • 08 } • 09 } • 10}

  16. 範例3:設有檔案Ex02_5_2.java,其功能為解釋兩個互不相關的區塊,可宣告相同名稱之變數。範例3:設有檔案Ex02_5_2.java,其功能為解釋兩個互不相關的區塊,可宣告相同名稱之變數。 • 01 class Ex02_5_2 { • 02 public static void main(String[] args) { • 03 { int a = 3; • 04 System.out.println("Block A and a = " + a); • 05 } • 06 { int a = 5; • 07 System.out.println("Block B and a = " + a); • 08 } • 09 } • 10 }

  17. 範例4:設有檔案Ex02_5_3.java,其功能為解釋外部區塊與內部區塊不得有相同名稱之宣告變數。範例4:設有檔案Ex02_5_3.java,其功能為解釋外部區塊與內部區塊不得有相同名稱之宣告變數。 • 01 class Ex02_5_3 { • 02 public static void main(String[] args) { • 03 { int a = 3; • 04 { int a = 5; • 05 System.out.println("a = " + a); • 06 } • 07 } • 08 } • 09 }

  18. 範例5:設有檔案Ex02_5_4.java,其功能為解釋內部區塊可使用外部區塊之宣告變數。範例5:設有檔案Ex02_5_4.java,其功能為解釋內部區塊可使用外部區塊之宣告變數。 • 01 class Ex02_5_4 { • 02 public static void main(String[] args) { • 03 { int a = 3; • 04 { int b = 5; • 05 System.out.println("a = " + a); • 06 System.out.println("b = " + b); • 07 } • 08 } • 09 } • 10 }

  19. 範例6:設有檔案Ex02_5_5.java,其功能為解釋外部區塊不得使用內部區塊之宣告變數。範例6:設有檔案Ex02_5_5.java,其功能為解釋外部區塊不得使用內部區塊之宣告變數。 • 01 class Ex02_5_5 { • 02 public static void main(String[] args) { • 03 { int a = 3; • 04 { int b = 5; • 05 } • 06 System.out.println("a = " + a); • 07 System.out.println("b = " + b); • 08 } • 09 } • 10}

  20. 2-6生存變數(Instance Variable) • 變數是源自類別程序,如果未建立成新物件,雖然已作變數宣告,變數仍因其所屬的物件不存在而無法使用,這點與其他程式語言有所不同。

  21. 範例7:設有檔案Ex02_6_1.java,其功能為解釋在類別程序內宣告之變數,無法直接使用。範例7:設有檔案Ex02_6_1.java,其功能為解釋在類別程序內宣告之變數,無法直接使用。 • 01 class Mynumber { • 02 int n; • 03 } • 04 class Ex02_6_1 { • 05 public static void main(String[] args) { • 06 n = 10; • 07 System.out.println("n = "+ n); • 08 } • 09 }

  22. 範例8:設有檔案Ex02_6_2.java,其功能為解釋非生存區塊宣告之變數,無法直接使用。範例8:設有檔案Ex02_6_2.java,其功能為解釋非生存區塊宣告之變數,無法直接使用。 • 01 class Ex02_6_2 { • 02 int a; • 03 public static void main(String[] args) { • 04 a = 5; • 05 System.out.println("a = "+ a); • 06 } • 07 }

  23. 2-7 類別變數(Class Variables) • 凡於宣告時前置static的變數,是謂 “類別變數(Class Variables)”,不需經過產生新物件的過程,即可直接被使用。

  24. 範例9:設有檔案Ex02_7_1.java,其功能為解釋類別變數之應用。範例9:設有檔案Ex02_7_1.java,其功能為解釋類別變數之應用。 • 01 class Mynumber { • 02 static int n; • 03 } • 04 class Ex02_7_1 { • 05 public static void main(String[] args) { • 06 Mynumber.n = 10; • 07 System.out.println("n = "+ Mynumber.n); • 08 } • 09 }

  25. 範例10:設有檔案Ex02_7_2.java,其功能為解釋變數在自身類別程序內宣告時,可標示所屬類別物件之名稱、或直接被使用。範例10:設有檔案Ex02_7_2.java,其功能為解釋變數在自身類別程序內宣告時,可標示所屬類別物件之名稱、或直接被使用。 • 01 class Ex02_7_2 { • 02 static int a; • 03 public static void main(String[] args) { • 04 Ex02_7_2.a = 5; • 05 System.out.println("Ex02_7_2.a = "+ Ex02_7_2.a); • 06 a = 10; • 07 System.out.println("a = "+ a); • 08 } • 09 }

  26. 第三章運算式(Expression)與流程控制(Control Flow) • 3-1 簡介 • 3-2 變數 • 3-3運算關係式(Expression) • 3-4 資料轉型(Type Conversion) • 3-5 流程控制(Control Flow) • 3-5-1 決策流程控制(Decision Control Flow) • 3-5-1-1 if…else決策 • 3-5-1-2 else if決策 • 3-5-1-3 switch…case決策 • 3-5-2廻圈流程控制(Loop Control Flow) • 3-5-2-1 while廻圈 • 3-5-2-2 do…while廻圈 • 3-5-2-3 for廻圈 • 3-6 break與continue • 3-7 習題(Exercises)

  27. 3-1 簡介 • 於Java程式中,所有被使用的記憶體(Memory) 都需作資料型態(Data Types) 之宣告(Declare),以限制該記憶體儲存資料的型態。

  28. 3-2 變數 • 內建資料型態(Built Data Types) • 建構資料型態(Constructed Data Types)

  29. 範例11:設有檔案Ex03_2.java,其功能為解釋內建資料型態、與建構資料型態之用法。範例11:設有檔案Ex03_2.java,其功能為解釋內建資料型態、與建構資料型態之用法。 • 01 class Mynumber { • 02 int i; • 03 } • 04 class Ex03_2 { • 05 public static void main(String[] args) { • 06 int j; • 07 Mynumber a; • 08 j=3; • 09 a = new Mynumber(); • 10 a.i = 5; • 11 System.out.println("j = "+j); • 12 System.out.println("a.i = "+a.i); • 13 } • 14 }

  30. 3-3運算關係式(Expression) • 設有元素值a與b,若兩者之間存在某種關係元R,即可以關係式 “aRb” 表示之。我們熟悉的關係元如:“等於(=)”、“大於(>)”、“因此(→)”、“加(+)”、“乘(×)” 等均屬之。

  31. 3-4 資料轉型(Type Conversion) • 將一個變數(Variable) 的資料型態(Data Type) 轉換成另一個資料型態,是謂 “資料轉型(Type Conversion)”,例如將byte型態之變數轉換成int型態來使用。

  32. 範例13: 設有檔案Ex03_4_1.java,其功能為解釋資料變數自動轉型之應用。 • 01 class Ex03_4_1 { • 02 public static void main (String[] argv) { • 03 byte bt; • 04 short sh; • 05 int in; • 06 long lg; • 07 float ft; • 08 double db; • 09 bt = 97; • 10 sh = bt; • 11 System.out.println("short<--byte:"+sh+"<--"+bt); • 12 in = sh; • 13 System.out.println("int<--short:"+in+"<--"+sh); • 14 lg = in; • 15 System.out.println("long<--int:"+lg+"<--"+in); • 16 ft = lg; • 17 System.out.println("float<--long:"+ft+"<--"+lg); • 18 db = ft; • 19 System.out.println("double<--float:"+db+"<--"+ft); • 20 } • 21 }

  33. 範例14: 設有檔案Ex03_4_2.java,其功能為解釋資料變數強迫轉型之應用。 • 01 class Ex03_4_2 { • 02 public static void main (String[] argv) { • 03 byte bt; • 04 short sh; • 05 int in; • 06 long lg; • 07 float ft; • 08 double db; • 09 db = 97.0; • 10 ft = (float)db; • 11 System.out.println("float<--double:"+ft+"<--"+db); • 12 lg = (long)ft; • 13 System.out.println("long<--float:"+lg+"<--"+ft); • 14 in = (int)lg; • 15 System.out.println("int<--long:"+in+"<--"+lg); • 16 sh = (short)in; • 17 System.out.println("short<--int:"+sh+"<--"+in); • 18 bt = (byte)sh; • 19 System.out.println("bt<--short:"+bt+"<--"+sh); • 20 } • 20 }

  34. 3-5 流程控制(Control Flow) • 於Java程式中,常用之流程控制為 “決策流程控制(Decision Control Flow)” 與 “廻圈流程控制(Loop Control Flow)”。前者使用if…else、else if、switch…case敘述式(Statements);後者使用while、do…while、for廻圈。

  35. 範例15: 設有int變數a = 10,試求下列片斷程式之執行結果。 • if ( a > 0) • System.out.println("執行真值敘述式: " + a); • else { • a = 20; • System.out.println(“執行偽值敘述式: ” + a); • }

  36. 範例16:設有檔案Ex03_5_1_2.java,其功能為解釋else if區塊鏈、與多重多層決策之應用。 • 01 class Ex03_5_1_2 { • 02 public static void main (String[] argv) { • 03 int a = 3; • 04 if (a == 1) • 05 System.out.println("a is 1"); • 06 else if (a == 2) • 07 System.out.println("a is 2"); • 08 else if (a == 3) • 09 System.out.println("a is 3"); • 10 else • 11 System.out.println("a is others"); • 12 } • 13 }

  37. 範例17:設有檔案Ex03_5_1_3.java,其功能為解釋switch…case區塊鏈多重多層決策之應用。範例17:設有檔案Ex03_5_1_3.java,其功能為解釋switch…case區塊鏈多重多層決策之應用。 •  01 class Ex03_5_1_3 { • 02 public static void main (String[] argv) { • 03 int a = 3; • 04 switch (a) { • 05 case 1: • 06 System.out.println("a is 1"); • 07 break; • 08 case 2: • 09 System.out.println("a is 2"); • 10 break; • 11 case 3: • 12 System.out.println("a is 3"); • 13 break; • 14 default: • 15 System.out.println("a is others"); • 16 } • 17 } • 18 }

  38. 範例18:設有檔案Ex03_5_2_1.java,其功能為解釋while廻圈之應用。範例18:設有檔案Ex03_5_2_1.java,其功能為解釋while廻圈之應用。 • 01 class Ex03_5_2_1 { • 02 public static void main (String[] argv) { • 03 int a = 1; • 04 while (a <= 3) { • 05 System.out.println("a = : " + a); • 06 a++; • 07 } • 08 } • 09 }

  39. 範例19:設有檔案Ex03_5_2_2.java,其功能為解釋do…while廻圈之應用。範例19:設有檔案Ex03_5_2_2.java,其功能為解釋do…while廻圈之應用。 • 01 class Ex03_5_2_2 { • 02 public static void main (String[] argv) { • 03 int a = 1; • 04 do { • 05 System.out.println("a = : " + a); • 06 a++; • 07 } while (a <= 3); • 08 } • 09 }

  40. 範例20:設有檔案Ex03_5_2_3.java,其功能為解釋for廻圈之應用。範例20:設有檔案Ex03_5_2_3.java,其功能為解釋for廻圈之應用。 • 01 class Ex03_5_2_3 { • 02 public static void main (String[] argv) { • 03 int a; • 04 for(a=1; a<=3; a++) • 05 System.out.println("a = : " + a); • 06 } • 07 }

  41. 3-6 break與continue • 在Java程式廻圈中,break用於跳出廻圈區塊,並且不再執行該次廻圈內之重複執行式(Iteration Expression);continue用於跳出該次廻圈,但並未跳出區塊,仍繼續執行該次廻圈內之重複執行式。

  42. 範例21:設有檔案Ex03_6_1.java,其功能為解釋break在廻圈之應用。範例21:設有檔案Ex03_6_1.java,其功能為解釋break在廻圈之應用。 • 01 class Ex03_6_1 { • 02 public static void main (String[] argv) { • 03 int a; • 04 for(a=1; a<=5; a++) { • 05 if(a==3) • 06 break; • 07 System.out.println("a = : " + a); • 08 } • 09 } • 10 }

  43. 範例22:設有檔案Ex03_6_2.java,其功能為解釋continue在廻圈之應用。範例22:設有檔案Ex03_6_2.java,其功能為解釋continue在廻圈之應用。 • 01 class Ex03_6_2 { • 02 public static void main (String[] argv) { • 03 int a; • 04 for(a=1; a<=5; a++) { • 05 if(a==3) • 06 continue; • 07 System.out.println("a = : " + a); • 08 } • 09 } • 10 }

  44. 範例23:設有檔案Ex03_6_3.java,其功能為解釋break與廻圈標籤之應用。範例23:設有檔案Ex03_6_3.java,其功能為解釋break與廻圈標籤之應用。 • 01 class Ex03_6_3 { • 02 public static void main (String[] argv) { • 03 int a, b; • 04 L1: for(a=1; a<=2; a++) { • 05 System.out.println("a = : " + a); • 06 L2: for(b=1; b<=5; b++) { • 07 if(b==3) • 08 break L2; • 09 System.out.println("b = : " + b); • 10 } • 11 } • 12 } • 13 }

  45. 範例24:設有檔案Ex03_6_4.java,其功能為解釋continue與廻圈標籤之應用。範例24:設有檔案Ex03_6_4.java,其功能為解釋continue與廻圈標籤之應用。 • 01 class Ex03_6_4 { • 02 public static void main (String[] argv) { • 03 int a, b; • 04 L1: for(a=1; a<=2; a++) { • 05 System.out.println("a = : " + a); • 06 L2: for(b=1; b<=5; b++) { • 07 if(b==3) • 08 continue L2; • 09 System.out.println("b = : " + b); • 10 } • 11 } • 12 } • 13 }

  46. 第四章方法程序(Methods) • 4-1 簡介 • 4-2方法程序(Methods) • 4-3 生存方法程序(Instance Methods) • 4-4 類別方法程序(Class Methods) • 4-5建構子(Constructor) • 4-6方法程序重載(Method Overload) • 4-7 public / private限制修飾子(Modifications) • 4-8 this代名詞 • 4-8-1 類別代名詞 • 4-8-2 建構子代名詞 • 4-9 巢狀類別(Nested Class) • 4-9-1 成員類別(Member Class) • 4-9-2 區域類別(Local Class) • 4-10 習題(Exercises)

  47. 4-1 簡介 • Java語言的方法程序(Methods),猶如其他高階語言程式中的副程式(Subroutines)或函數(Functions),是具有解決問題功能的程式區塊

  48. 4-2方法程序(Methods) • 為了方便,將常用的功能需求,先設計出一些內建副程式(Subroutine) / 函數(Function),或Java之方法程序(Methods),儲置於系統程式庫內,於爾後設計程式時,視需要,由主程式呼叫有關的副程式/函數、或方法程序,組成一個功能強大的工作群。

  49. 範例25:設有檔案Ex04_2.java,其功能為解釋主體類別程序如何呼叫使用方向程序?範例25:設有檔案Ex04_2.java,其功能為解釋主體類別程序如何呼叫使用方向程序? • 01 class Study { • 02 int credit=0; • 03 void addcredit(int i) { credit += i; } • 04 int totalcredit() { return credit; } • 05 } • 06 class Ex04_2 { • 07 public static void main(String[] args) { • 08 Study joe = new Study(); • 09 Study george = new Study ); • 10 joe.addcredit(12); • 11 george.addcredit(9); • 12 joe.addcredit(6); • 13 george.addcredit(3); • 14 System.out.println("joe studied: "+joe.totalcredit()+"credites"); • 15 System.out.println("george studied: "+george.totalcredit()+"credites"); • 16 } • 17 }

  50. 4-3 生存方法程序(Instance Methods) • 方法程序也是一樣,有其所屬之類別物件,當所屬類別物件生存時,該方法程序才可被執行使用,如此隨所屬類別物件生存而生存之方法程序是謂 “生存方法程序(Instance Methods)”。