Java 入門指南 V2.00 - 單元 1 - 認識 Java 語言




使用 Java 語言寫程式,最簡單的方式就是開啟文字編輯器 (text editor) ,然後將原始程式碼 (source code) 逐字元 (character) 一個一個打進文字編輯器中,然後依純文字檔案的編碼格式儲存檔案 (file) , Java 程式的原始碼檔案採用 .java 的副檔名 (extension)



下面利用 Mac 系統的文字編輯開啟第一個範例 Demo.java



也可以利用具有語法高亮度顯示的文字編輯器,或是整合開發環境 (Integrated Development Environment, IDE) ,如下圖為 Mac 系統的 Xcode



或是參考本書的語法高亮度顯示,此範例程式 Demo.java 如下


001// 宣告類別名稱
002public class Demo { 
003   // 宣告 main() 方法
004   public static void main(String[] args) { 
005      // 建立 Object 型態的物件
006      Object o = new Object()
007
008      // 於命令列印出訊息
009      System.out.println();
010      System.out.println(o.toString());
011      System.out.println("程式執行結束");
012      System.out.println();
013   }
014}
015 
016/* 檔名: Demo.java
017   作者: Kaiching Chang
018   時間: September, 2014  */

我們先看到栗色標記的幾行,首先第 2 行


002public class Demo { 

第 4 行


004public static void main(String[] args) { 

以及第 6 行


006Object o = new Object()

publicclassstaticvoidnew 被稱為關鍵字 (keyword) ,所謂的關鍵字是語法功能的保留字 (reserved word) ,具有既定特殊的用法,例如 public 為權限的修飾子 (modifier) , public 表示公開的,也就是任何地方都可以存取以 public 宣告 (declare) 的內容。 Java 共有 50 個關鍵字,我們接下來會逐一介紹各個關鍵字的用法。


其他用橄欖色標記的字,如第 6 行的 Object


006Object o = new Object()

第 4 行的 String


004public static void main(String[] args) { 

第 9 行的 Systemoutprintln()


009System.out.println();

這幾個字是 API 中可直接使用的名稱,屬於 API 中的識別字。


另外,雙引號為起來的內容為藍色


011System.out.println("程式執行結束");

這是字串 (string) ,所謂的字串就是文字資料,由於 Java 採用 Unicode 編碼,因此字串內容可以是任何 Unicode 字元。


Unicode 提供數十種文字系統編碼的方式,其中包括我們日常使用的中文,詳細可參見維基百科的介紹

註解 (comment) 在語法高亮度系統採用綠色,連續兩個斜線為單行的注釋,斜線、星號開始到另一組星號、斜線結束的範圍則為多行的註解


001// 宣告類別名稱

所謂的註解就是在程式中輔助說明的文字,凡是註解文字,也就單行連續兩個斜線之後的文字,或是多行斜線、星號範圍間的文字,這些文字都不會被程式執行,因此可插入任何自然語言的說明字句,無須恪守 Java 的語法規則。


其他沒有粗體,也沒有特殊顏色的文字都是識別字 (identifier) ,所謂的識別字是我們寫程式自行定義的名稱,如上例中的變數 (variable) o 。事實上,許多識別字已經是預設或存在於 Java API 之中,預設如上面的 main()argsmain() 為方法 (method) 名稱,每個可執行的 Java 程式都必須有個 main() 方法, args 則是 main() 的參數 (parameter) 名稱。


Java API 提供許多已經寫好,測試無誤的類別 (class) ,因此我們寫程式可以直接使用這些類別,以及其所提供的方法與屬性 (field) ,方法為類別進行工作的地方,屬性則為類別專屬的資料。我們應該先認識什麼是什麼,往後才繼續瞭解這些東東的用法。


上例中, ObjectStringSystemoutprintln() 都屬於 API 中的識別字, ObjectStringSystem 等三個都是類別名稱, outSystem 類別的屬性,實際上 out 是一個物件 (object) , println() 則是 out 物件的方法。


這個範例很簡單,大體上我們可以依四個單行註解分成四個區域來看,分別是


  • 宣告類別名稱
  • 宣告 main() 方法
  • 建立 Object 型態的物件
  • 於命令列印出訊息

由於 Java 是物件導向程式語言 (object-oriented programming language) ,使用 Java 寫程式就是設計、規劃物件,而類別為物件的藍圖,因此所有的 Java 程式都至少有一個類別,也就是說, Java 程式都必須用 class 定義, class 就是定義類別所採用的關鍵字。


可執行的 Java 程式則需要定義 main() 方法,這個 main() 需要用 publicstatic 修飾, public 表示公開的, static 表示可由類別名稱存取,這是給 Java 虛擬機器 (Java Virtual Machine, JVM) 呼叫 (call) 之用, Java 程式實際上是由 Java 虛擬機器執行的。


new 關鍵字用來新建物件,變數 o 為對 Object 型態物件的參考 (reference) ,由於 Java 是強型態 (strong typing) 的程式語言,因此變數使用前需要先經過宣告 (declaration) ,宣告的目的就是指定變數的資料型態 (data type) 。 new 之後接的 Object()Object 類別的建構子 (constructor) ,透過建構子就可以把類別轉化為物件。


底下使用 API 中 System 類別 out 物件的 println() 方法,使參數一次一行印在命令列上,其中用到


010System.out.println(o.toString());

println() 需要 String 型態的物件當作參數, String 型態的物件也就是字串,雙引號圍起來的內容。 o 呼叫 o 自己的 toString() 方法,這個方法會回傳 o 的字串表達形式,也就是表示 o 的字串物件。


如果沒有提供參數給 println()println() 就會印出新行字元,也就是印出空白行的意思。

一種類別,也就是一種型態(資料型態),我們繼續來看看如何編譯與執行吧!


中英文術語對照


文字編輯器text editor
原始程式碼source code
字元character
檔案file
副檔名extension
整合開發環境Integrated Development Environment, IDE
關鍵字keyword
保留字reserved word
修飾子modifier
宣告declare
註解comment
識別字identifier
變數variable
方法method
參數parameter
類別class
屬性field
物件object
物件導向程式語言object-oriented programming language
Java 虛擬機器Java Virtual Machine, JVM
呼叫call
參考reference
強型態strong typing
宣告declaration
資料型態data type
建構子 constructor

重點整理


  1. 寫程式可以用文字編輯器或整合開發環境。
  2. 關鍵字是語法功能的保留字,具有既定特殊的用法。
  3. Java API 中有大量可以運用的內建程式,其中在 java.lang 中的不需要額外 import ,包括 StringObjectSystem 等。
  4. 字串為雙引號圍起來的文字內容。
  5. 連續兩個斜線為單行註解,一個斜線加一個星號到一個星號到一個斜線則是多行的註解。
  6. Java 是物件導向程式語言,所有程式都需要定義類別,類別是物件的模版,可執行的 Java 程式則需要定義 main() 方法。
  7. Java 是強型態的程式語言,使用變數前需要先宣告,物件用關鍵字 new 及建構子建立,等號則是指派運算子。

問題與討論


  1. 可以用 Word 寫程式嗎?有什麼不方便的地方呢?
  2. 程式語言除了編譯式的 Java 外,還有直譯式的程式語言,這種程式語言是直接執行儲存程式的純文字檔案,請將直譯式與編譯式的程式語言各舉五種出來。
  3. 想想看應該替程式碼提供哪些註解?什麼地方需要?什麼地方又不需要?
  4. 物件導向程式語言除了 Java 還有其他的嗎? C 語言是嗎? Python 是嗎? Fortran 呢?
  5. 物件是程式設計的中文術語,英文原文為 object ,其實 object 就是一般中文所用「東西」的意思,想一想平常我們是怎麼運用「東西」的,「東西」的概念如何移植到程式設計的物件中?

the end

沒有留言: