SCJP ch02

188 views
116 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
188
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

SCJP ch02

  1. 1. 第 2 章 初探 Java 本投影片(下稱教用資源)僅授權給採用教用資源相關之旗標書籍為教科書之授課老師(下稱老師)專用,老 師為教學使用之目的,得摘錄、編輯、重製教用資源(但使用量不得超過各該教用資源內容之 80% )以製作為 輔助教學之教學投影片,並於授課時搭配旗標書籍公開播放,但不得為網際網路公開傳輸之遠距教學、網路教 學等之使用;除此之外,老師不得再授權予任何第三人使用,並不得將依此授權所製作之教學投影片之相關著 作物移作他用。 著作權所有 © 旗標出版股份有限公司
  2. 2. 學習目標  準備開發程式的環境  撰寫、編譯與執行程式  認識 Java 程式的結構
  3. 3. 前言  在上一章中 , 已經簡單的介紹了有關程式語言最基本 的概念 , 以及程式語言的分類 , 並且對於 Java 程式 語言的演進也有了初步的瞭解。  接下來這一章 , 就要開始實際動手撰寫 Java 程式 , 並且對於構成 Java 程式的基本要素 , 一一提出詳盡 的解說。
  4. 4. 2-1 建置 Java 的程式開發環境  雖然市面上、網路上可找到不少具有整合開發環境 (IDE) 的 Java 語言開發工具 , 像是昇陽 (Sun) 公 司的 NetBeans IDE 、開放原始碼 (Open Source) 的 Eclipse 、以及 CodeGear 公司的 JBuilder 等 。  不過初學者最好能親自用昇陽公司的 Java 開發套件 (JDK, Java SE Developement Kit) 來編譯及執行 Java 程式 , 以便對 Java 有更深入的認識;等到將 來比較熟練之後 , 再使用 IDE 來加快程式開發的速 度。
  5. 5. 2-1-1 下載 JDK 及文件  若想取得最新 JDK 版本 , 可直接至昇陽公司的官方 網站下載 , 請開啟瀏覽器 , 連上 "http://java.sun.com/javase/downloads/index.jsp " :
  6. 6. 下載 JDK 及文件
  7. 7. 下載 JDK 及文件
  8. 8. 下載 JDK 及文件
  9. 9. 下載 JDK 及文件  在下載 JDK 的同時 , 我們也可另行下載 JDK 的說 明文件 , 請再次連 上 "http://java.sun.com/javase/downloads/index.jsp ", 向下捲動找到 "Java SE 6 Documentation" 項目 :
  10. 10. 下載 JDK 及文件
  11. 11. 下載 JDK 及文件  下載完畢 , 即可依下一單元介紹的方法進行安裝與設 定。
  12. 12. 2-1-2 安裝 JDK 工具及文件  要安裝 JDK 很簡單 , 直接執行其安裝程式即可;至 於文件則只要自行解壓縮到指定的目錄即可完成安裝 。
  13. 13. 安裝 JDK 開發工具  要安裝 JDK 開發工具 , 請直接執行下載回來的安裝 程式檔:
  14. 14. 安裝 JDK 開發工具
  15. 15. 安裝 JDK 開發工具
  16. 16. 安裝 JDK 開發工具
  17. 17. 安裝 JDK 開發工具
  18. 18. 安裝 JDK 開發工具  至此即安裝完成 , 稍後我們會介紹如何設定 Java 的 工作環境 , 以方便使用 JDK 中的工具程式。
  19. 19. 安裝 JDK 說 明文件  昇陽公司提供的 JDK 說明文件為 HTML 網頁格式 , 而且是以壓縮檔的形式包裝 , 並未提供安裝程式 , 我 們只需將它解壓縮至想安裝的路徑即可:
  20. 20. 安裝 JDK 說 明文件
  21. 21. 安裝 JDK 說 明文件  解壓縮完畢後 , 切換到文件解壓縮的目錄 , 如下操作 :
  22. 22. 安裝 JDK 說 明文件
  23. 23. 安裝 JDK 說 明文件
  24. 24. 2-1-3 設定開發環境  雖然 JDK 安裝好後即可使用 , 但由於安裝程式未替 我們設定 Windows 環境變數 , 用起來並不方便 , 因 此要一勞永逸 , 就是在安裝後即設好相關環境變數。 請按開始鈕 , 並依如下步驟進行設定:
  25. 25. 設定開發環境
  26. 26. 設定開發環境
  27. 27. 設定開發環境
  28. 28. 設定開發環境
  29. 29. 設定開發環境
  30. 30. 設定開發環境  設定好後不妨立即測試一下 , 請開啟命令提示字元視 窗 ( 執行開始功能表的『所有程式 / 附屬應用程式 / 命令提示字元』命令 ) :
  31. 31. 設定開發環境  如果出現『 'javac' 不是內部或外部命令、可執行的 程式或批次檔。』這樣的訊息 , 表示您的 Path 環境 變數設定有誤 , 因此作業系統找不到 javac 執行檔 所在的位置。  請再次確認您的 JDK 安裝路徑 , 並依前述的步驟重 新設定環境變數。
  32. 32. 2-2 撰寫第一個 Java 程式  要使用 Java 程式語言 , 您必須先將依照 Java 語 法撰寫的程式儲存在一個純文字檔 案中 ( 副檔名一般 都是用 .java), 然後再利用 Java 程式語言的編譯器 轉譯程式 , 將您所撰寫的 Java 程式轉譯成 Java 虛擬機器的機器碼 , 也稱為 Byte Code 。  然後再使用 Java 虛擬機器來執行轉譯出來的機器碼 。  如果執行結果有問題 , 就必須回頭修改程式 , 再重複 前面所描述的步驟。
  33. 33. 撰寫第一個 Java 程式  以下就帶領大家依據上述的步驟 , 完成第 1 個 Java 程式。
  34. 34. 2-2-1 使用文字編輯器撰寫程式  要撰寫 Java 程式 , 必須使用文字編輯器 (Text Editor), 像是 Windows 所內附的記事本 , 或者是坊 間一般流行的 UltraEdit 這類付費軟體來撰寫 , 而不 是使用 Word 這一類的文書處理軟體。  您也可以在網路上找到許多功能不錯、免費的文字編 輯器 , 像是 Crimson Editor 、 VIM 等等。
  35. 35. 為什麼不能使用文書處理軟體撰寫 Java 程式  像是 Word 之類的文書處理軟體 , 由於必須記錄段 落文字的樣式 ( 大小、顏色、字體 ) , 因此除了您鍵 入的文字以外 , 儲存檔案時還會儲存許多相關文字樣 式的資訊 , 而且預設會以其自訂的格式儲存文字與相 關資訊。  Java 編譯器既不認得這些文書處理軟體的檔案格式 , 也無法認得其中所儲存的相關資訊 , 因此無法正確編 譯程式 , 所以請不要使用文書處理軟體來撰寫程式。
  36. 36. 使用文字編輯器撰寫程式  現在 , 就請您使用文字編輯器 , 撰寫如下的程式: ▪ 請特別注意 , 鍵入程式的時候並不包含每一行開頭的 行號與空白 , 這些是為了書中解說程式時的方便 , 並 不是程式的一部份。  並請儲存為 FirstJava.java 這樣的檔名。
  37. 37. 2-2-2 編譯寫好的程式  撰寫好並儲存 FirstJava.java 這個程式檔後 , 就可以 利用 Java 編譯器來進行編譯。  Java 編譯器的檔名為 javac (javac.exe), 而執行程 式的工具則為 java (java.exe) 。  在使用前 , 請先確定您已依照上一節的說明建置好 Java 工作環境。
  38. 38. 編譯寫好的程式  請執行 『開始 / 所有程式 / 附屬應用程式 / 命令提 示字元』 命令 , 開啟命令提示字元 視窗 , 先利用 『 cd 』 指令切換到您儲存程式檔案的資料夾 , 例如 若 FirstJava.java 是儲存在 C 磁碟的 test 資料夾 下 , 就必須先執行以下的指令 , 切換到該資料夾:
  39. 39. 編譯寫好的程式  然後鍵入以下指令進行編譯:  如果編譯之後發現有錯誤 , 請回過頭去檢查您所鍵入 的程式 , 看看是不是有甚麼地方打錯了?  如果還是有問題 , 請參考 『 2-2-4 撰寫 Java 程式 的注意事項』 一節 , 仔細檢查您的程式。
  40. 40. 2-2-3 執行程式  一旦編譯完成 , 沒有任何錯誤 , 您就可以執行剛剛所 撰寫的程式了。請在您所開啟的命令提示字元視窗中 , 鍵入以下指令執行剛剛編譯好的程式: ▪ 編譯的結果會儲存到副檔名為 .class 的檔案 , 例如在 本例中為 FirstJava.class 。由於在執行時會自動加上 .class, 因此上面的命令不可寫成 java FirstClass.class 。
  41. 41. 執行程式  以下就是由編譯到執行的實際結果:
  42. 42. 2-2-4 撰寫 Java 程式的注意事項  如果編譯或是執行的過程中有問題 , 請依照以下所提 的注意事項 , 仔細檢查您的程式。
  43. 43. 檔 案名稱  檔案名稱必須和第 1 行 public class 之後的 FirstJava 相符 , 並且加上 .java 作為副檔名 , 以標 示這是一個 Java 程式。  因此 , 儲存的檔案必須取名為 FirstJava.java, 如果 取錯名字 , 編譯的時候就會出現錯誤訊息。  例如 , 剛剛的程式如果儲存在 First.java 中 , 則編譯 的結果如下。
  44. 44. 檔 案名稱  錯誤訊息告訴您必須將程式儲存在一個名為 FirstJava.java 的檔案裡。
  45. 45. 英文字大小寫不同  Java 編譯器會視英文字母的大小寫為不同的字母。  舉例來說 , 第 3 行一開頭的 System 就不能寫為 system, 也不能寫為 SYSTEM, 否則編譯的時候都 一樣會有錯誤訊息。
  46. 46. 全形與半形不同  如果您很習慣使用中文全形的標點符號或是括號 , 那 麼就必須特別注意 , 在程式中必須使用半形的標點符 號以及括號。  舉例來說 , 半形的『 ; 』不能寫成全形的『;』。
  47. 47. 執行時不需指定副檔 名  執行編譯好的程式時 , 只需要指定主檔名 , 也就是檔 案名稱中 .class 之前的部分 ( 因為 java 會自動加 上 .class 副檔名 ) 。  如果您連帶列出副檔名的話 , 就會出現執行錯誤的狀 況 , 像是這樣:
  48. 48. 執行時不需指定副檔 名  另外 , 執行時所指定的主檔名部分大小寫必須相符。  以本例來說 , 主檔名必須和第 1 行 public class 之 後的名稱一樣 , 也就是 FirstJava, 如果您的大小寫 不對 , 執行就會發生錯誤 , 例如。
  49. 49. 執行時不需指定副檔 名
  50. 50. 無法執行 javac.exe 或是 java.exe  這很可能是忘記設定環境變數 path 的值 , 請參考上 一節進行設定。
  51. 51. 2-3 Java 程式的組成要素  在上一節中 , 已經帶領大家實際撰寫了第一個 Java 程式 , 接下來就要針對這個簡單的程式 , 一一解析構 成 Java 程式的基本要素。
  52. 52. 2-3-1 區塊 (Block)  讓我們再來看看剛剛所撰寫的 FirstJava 程式:
  53. 53. 區塊 (Block)  簡簡單單的 5 行 , 就構成了 Java 程式最基本的架 構 , 其中 , 您可以注意到幾件事情: ▪ 程式中以一對大括號 { 與 } 括起來的部分稱為區塊 (Block), 區塊中可以包含其他的區塊 , 像是第 1 ~ 5 行的區塊就包含了第 2 ~ 4 行的區塊。在左大括號 ( 即 {) 左邊的文字代表的是該區塊的種類與名稱 , 不 同的區塊構成 Java 程式中的各種元素 , 後續的章節 會說明每一種區塊的意義。
  54. 54. 區塊 (Block) ▪ 為了突顯出區塊 , 並且方便辨識區塊的包含關係 , 在 撰寫程式時會把區塊的內容往右邊縮排 (Indent) 。 舉例來說 , 第 2 ~ 4 行的區塊因為是內含在第 1 ~ 5 行的區塊內 , 所以將整個區塊往右縮 , 這樣在視覺上 就可以清楚的區分出區塊間的關係。 不過 , 這純粹是為了撰寫或閱讀程式時辨識上的方便 , 而非必要的作法 , 您也可以把相同的程式寫成這樣。
  55. 55. 區塊 (Block) ▪ 一樣可以正常編譯執行 , 但可讀性很差。 ▪ 至於縮排時要往右移多少空格 , 則是憑個人喜好而定 , 我們建議以 2 ~ 4 個空格最恰當。在本書中 , 所有的 程式都是以 2 個空格為縮排的間隔。
  56. 56. 2-3-2 Java 程式的起點 - -main  在範例程式的區塊中 , 有一個區塊是每一個 Java 程 式都必須要有的 , 就是第 2 ~ 4 行的區塊 , 這個區 塊稱為 main() 方法 , 意思是說 , 這個區塊構成了一 個方法 (Method), 而 main 是這個方法的名字。  至於方法的意義 , 會在第 8 章說明 , 這裡只要先記 住每一個 Java 程式都必須要有一個 main() 方法即 可。
  57. 57. main() 方法的名稱  再次提醒 , 由於 Java 是英文字母大小寫不同 , 因此 要特別注意 main 是全部小寫。  除此之外 , 第一行 public class 之後的名稱也會依據 程式的目的不同而命名 , 以適度說明程式的內容。
  58. 58. Java 程式的起點 - -main  main() 方法是 Java 程式真正執行時的起點 , 當 Java 程式執行時 , 會從這個區塊內的程式開始 , 循 序執行 , 一直到這個區塊結束為止。  以 FirstJava.java 來說 , main() 方法中只有一行程式 , 這行程式的作用就是在螢幕上輸出訊息。  其中 , 以一對雙引號 ("") 所括起來的內容就是要輸 出的訊息 , 在本例中 , 就是輸出『這是我的第一個 Java 程式。』只要變化用雙引號括起來的內容 , 就 可以輸出不同的訊息。
  59. 59. Java 程式的起點 - -main  因此 , 只要更改 main() 方法的內容 , 程式的執行結 果就會不同。舉例來說 , 我們可以修改 FirstJava.java 程式 , 讓 main() 方法的內容更加豐 富 , 例如:
  60. 60. Java 程式的起點 - -main  在 SecondJava.java 這個程式中 , main() 方法內有 2 行程式 , 分別輸出兩段訊息。因此 , 編譯、執行程 式就會看到這 2 行訊息了。  從這一章開始 , 範例程式都會依循和 FirstJava.java 相似的架構 , 僅有內部的區塊 , 也就是 main() 方法 有所差別 , 來執行不同的動作。
  61. 61. Java 程式的起點 - -main  除此之外 , 第一行 public class 之後的名稱也會依據 程式的目的不同而命名 , 以適度說明程式的內容。
  62. 62. 2-3-3 敘述 (Statement )  如果細部來看單一個區塊 , 那麼每個區塊又是由一或 多個敘述 (Statement ) 所構成。  簡單的敘述是以分號 (;) 結尾 , 其他的敘述則是以一 個區塊作為結尾。  以 SecondJava.java 為例 , 在 main() 方法這個區 塊中就有兩個敘述 , 分別是:  Java 程式基本上就是由敘述組合而成 , 而程式在執 行時就是以敘述為單元 , 由上往下循序進行。
  63. 63. 敘述結尾分號  簡單的敘述都是以分號為分隔 , 同一個敘述可以分成 多行撰寫 , 和寫在同一行是一樣的效果;多個簡單敘 述也可以寫在同一行 , 結果和每一個敘述單獨撰寫成 一行相同。  舉例來說 , 以下這個程式就和 SecondJava.java 意 義完全相同 , 只是斷行的方式不同而已。
  64. 64. 敘述結尾分號  其中 3 、 4 兩行就是原本的第 3 行;而 5 、 6 兩行則是原本的第 4 行。
  65. 65. 字符 (Token) 與空白符號 (Whitespace)  如果再把敘述剖開 , 那麼敘述可以再細分為由一或多 個字符 (Token) 所組成。  例如 SecondJava.java 的第 3 行 『 System.out.println (" 這是我所寫的第二個 Java 程式, "); 』就是由『 System 』、『 . 』、 『 out 』、『 . 』、『 println 』、『 ( 』、『 " 這 是我所寫的第二個 Java 程式, " 』、『 ) 』、 『 ; 』這些字符所組成。  字符與字符之間可以加上適當數量的空白符號 (Whitespace), 以方便識別。
  66. 66. 字符 (Token) 與空白符號 (Whitespace)  舉例來說 , 以下的程式雖然在 "println" 與 "(" 間加 上了額外的空白 , 但和 SecondJava.java 的意義是 相同的:
  67. 67. 字符 (Token) 與空白符號 (Whitespace)  但是如果字符間不相隔開會造成混淆的話 , 就一定得 加上空白符號。  舉例來說 , 第 2 行的 public 、 static 、 void 與 main 這 4 個字符中間若不以分隔字元隔開 , 就變 成 publicstaticvoidmain, Java 編譯器就會以為這是 單一個字符了。
  68. 68. 字符 (Token) 與空白符號 (Whitespace)  在 Java 中 , 空白字元、換行字元 ( 也就是按 [Enter]) 以及定位字元 ( 也就是按 [Tab]) 都可以作 為空白符號 , 您可以依據實際的需求採用不同的方式 。  之前曾經提過 , 同一個敘述可以分成多行撰寫 , 其實 就是利用換行字元當作空白符號。  換句話說 , 同一敘述分成多行撰寫時並不能隨便斷行 , 而必須以字符為界線 , 像是以下這個程式編譯時就 會有錯誤 , 因為它把 println 這個字符斷開成兩行了 。
  69. 69. 字符 (Token) 與空白符號 (Whitespace)
  70. 70. 分隔符號 (Separator)  要特別注意的是 , "(" 、 ")" 、 "{" 、 "}" 、 "[" 、 "]" 、 ";" 、 "," 、 "." 這 些字符在 Java 中稱為分隔符號 (Separator 或 punctuator) 。  它們除了可以將其之前與之後的字符隔開以外 , 通常 也代表了其後的字符 ( 如果是成對的分隔符號 , 像是 "{" 與 "}", 則是指由這對分隔符號所包含的內容 ) 是 其前面字符的附屬部分。  舉例來說 , 在 SecondJava.java 中 , main() 方法後 面由 "{" 、 "}" 括起來的區塊就是 main() 方法的主
  71. 71. 分隔符號 (Separator)  除了 ";" 在前面已經說明過 , 是用來分隔敘述以外 , 其餘的分隔符號會在後面章節中適當的地方說明。
  72. 72. 2-3-4 為程式加上註解 (Comment )  除了撰寫實際上會有所動作的敘述以外 , 您也可以在 程式中加上僅有說明用途的註解 (Comment ) 。  舉例來說 , 以下的程式就加上了許多註解 , 讓您可以 更輕易的看懂程式的內容。
  73. 73. 為程式加上註解 (Comment )
  74. 74. 為程式加上註解 (Comment )  其中 , // 字符開始往後一直到該行文字結束之前的內 容都是註解 , 當 Java 解譯器看到 "//" 字符後 , 就會 忽略其後的文字 , 一直到下一行開始 , 才會繼續轉譯 程式的內容 , 這種註解稱為單行註解 (End-Of-Line Comment) 。  另外還有一種可以跨越多行的註解方式 , 稱為傳統式 註解 (Traditional Comment) 或是區塊式註解 (Block Comment), 以成對的 /* 與 */ 來包含所要 加入的註解說明。
  75. 75. 為程式加上註解 (Comment )  例如:
  76. 76. 為程式加上註解 (Comment )  其中第 1 ~ 4 行就是一個跨越 4 行的區塊式註解 , 而第 7 行則是一個僅在單一行內的區塊式註解。  區塊式註解原則上可出現在程式中的任何位置 , 但不 能出現在字符內 , 例如以下程式在編譯時會有錯誤:  因為在第 2 行中有一個區塊式註解出現在字符中 , 這是錯誤的寫法。
  77. 77. 為程式加上註解 (Comment )  註解是一項非必要、但強烈建議使用的工具。  尤其當程式很長或是邏輯比較複雜的時候 , 加上適當 的註解不但可以讓自己在一段時間過後能夠知道撰寫 程式時的想法 , 如果程式往後要交給別的人修改 , 那 麼註解也是後繼者理解程式的最佳幫助。
  78. 78. 為程式加上註解 (Comment )  總結來說 , Java 程式是由字符組成敘述 , 再由敘述 組成區塊 , 然後再由區塊組成整個程式。  到了這裡 , 我們已經把 Java 程式最基本的架構以及 各個組成元素簡單說明完畢 , 從下一章開始 , 就要學 習與動手撰寫更複雜、功能更多的 Java 程式了。
  79. 79. 1. Place codes into the following class so that it compiles correctly . Codes:
  80. 80. 2. Which are true for Java language? (Choose all that apply . ) A. A block is begin with [ and end with ]. B. A Block Comment is begin with /* and end with */. C. A Whitespace could be a space, tab, or new-line character. D. A statement is end with colon (:). E. Every executable program must have a Main() method.
  81. 81. 3. Given the following java code: Which is the result? A. Compiles error at line 1 because missing class name (Hi). B. Compiles error at line 2 because too much statement in one line. C. Compiles error at line 2 because a statement can't be break into two lines. D. Compiles error at line 3 because }} should be modified to } }. E. Compiles successfully.

×