使用 Java 語言寫程式,最簡單的方式就是開啟文字編輯器 (text editor) ,然後將原始程式碼 (source code) 逐字元 (character) 一個一個打進文字編輯器中,然後依純文字檔案的編碼格式儲存檔案 (file) , Java 程式的原始碼檔案採用 .java 的副檔名 (extension)
下面利用 Mac 系統的文字編輯開啟第一個範例 Demo.java
也可以利用具有語法高亮度顯示的文字編輯器,或是整合開發環境 (Integrated Development Environment, IDE) ,如下圖為 Mac 系統的 Xcode
或是參考本書的語法高亮度顯示,此範例程式 Demo.java 如下
001 | // 宣告類別名稱 |
002 | public 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 行
002 | public class Demo { |
第 4 行
004 | public static void main(String[] args) { |
以及第 6 行
006 | Object o = new Object(); |
public 、 class 、 static 、 void 、 new 被稱為關鍵字 (keyword) ,所謂的關鍵字是語法功能的保留字 (reserved word) ,具有既定特殊的用法,例如 public 為權限的修飾子 (modifier) , public 表示公開的,也就是任何地方都可以存取以 public 宣告 (declare) 的內容。 Java 共有 50 個關鍵字,我們接下來會逐一介紹各個關鍵字的用法。
其他用橄欖色標記的字,如第 6 行的 Object
006 | Object o = new Object(); |
第 4 行的 String
004 | public static void main(String[] args) { |
第 9 行的 System 、 out 及 println()
009 | System.out.println(); |
這幾個字是 API 中可直接使用的名稱,屬於 API 中的識別字。
另外,雙引號為起來的內容為藍色
011 | System.out.println("程式執行結束"); |
這是字串 (string) ,所謂的字串就是文字資料,由於 Java 採用 Unicode 編碼,因此字串內容可以是任何 Unicode 字元。
Unicode 提供數十種文字系統編碼的方式,其中包括我們日常使用的中文,詳細可參見維基百科的介紹。
註解 (comment) 在語法高亮度系統採用綠色,連續兩個斜線為單行的注釋,斜線、星號開始到另一組星號、斜線結束的範圍則為多行的註解
001 | // 宣告類別名稱 |
所謂的註解就是在程式中輔助說明的文字,凡是註解文字,也就單行連續兩個斜線之後的文字,或是多行斜線、星號範圍間的文字,這些文字都不會被程式執行,因此可插入任何自然語言的說明字句,無須恪守 Java 的語法規則。
其他沒有粗體,也沒有特殊顏色的文字都是識別字 (identifier) ,所謂的識別字是我們寫程式自行定義的名稱,如上例中的變數 (variable) o 。事實上,許多識別字已經是預設或存在於 Java API 之中,預設如上面的 main() 與 args , main() 為方法 (method) 名稱,每個可執行的 Java 程式都必須有個 main() 方法, args 則是 main() 的參數 (parameter) 名稱。
Java API 提供許多已經寫好,測試無誤的類別 (class) ,因此我們寫程式可以直接使用這些類別,以及其所提供的方法與屬性 (field) ,方法為類別進行工作的地方,屬性則為類別專屬的資料。我們應該先認識什麼是什麼,往後才繼續瞭解這些東東的用法。
上例中, Object 、 String 、 System 、 out 與 println() 都屬於 API 中的識別字, Object 、 String 、 System 等三個都是類別名稱, out 為 System 類別的屬性,實際上 out 是一個物件 (object) , println() 則是 out 物件的方法。
這個範例很簡單,大體上我們可以依四個單行註解分成四個區域來看,分別是
- 宣告類別名稱
- 宣告 main() 方法
- 建立 Object 型態的物件
- 於命令列印出訊息
由於 Java 是物件導向程式語言 (object-oriented programming language) ,使用 Java 寫程式就是設計、規劃物件,而類別為物件的藍圖,因此所有的 Java 程式都至少有一個類別,也就是說, Java 程式都必須用 class 定義, class 就是定義類別所採用的關鍵字。
可執行的 Java 程式則需要定義 main() 方法,這個 main() 需要用 public 與 static 修飾, 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() 方法,使參數一次一行印在命令列上,其中用到
010 | System.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 |
重點整理
- 寫程式可以用文字編輯器或整合開發環境。
- 關鍵字是語法功能的保留字,具有既定特殊的用法。
- Java API 中有大量可以運用的內建程式,其中在 java.lang 中的不需要額外 import ,包括 String 、 Object 、 System 等。
- 字串為雙引號圍起來的文字內容。
- 連續兩個斜線為單行註解,一個斜線加一個星號到一個星號到一個斜線則是多行的註解。
- Java 是物件導向程式語言,所有程式都需要定義類別,類別是物件的模版,可執行的 Java 程式則需要定義 main() 方法。
- Java 是強型態的程式語言,使用變數前需要先宣告,物件用關鍵字 new 及建構子建立,等號則是指派運算子。
問題與討論
- 可以用 Word 寫程式嗎?有什麼不方便的地方呢?
- 程式語言除了編譯式的 Java 外,還有直譯式的程式語言,這種程式語言是直接執行儲存程式的純文字檔案,請將直譯式與編譯式的程式語言各舉五種出來。
- 想想看應該替程式碼提供哪些註解?什麼地方需要?什麼地方又不需要?
- 物件導向程式語言除了 Java 還有其他的嗎? C 語言是嗎? Python 是嗎? Fortran 呢?
- 物件是程式設計的中文術語,英文原文為 object ,其實 object 就是一般中文所用「東西」的意思,想一想平常我們是怎麼運用「東西」的,「東西」的概念如何移植到程式設計的物件中?
the end
沒有留言:
張貼留言