阿瑟 發表
Java相較起C++, 架構顯的簡潔多了. 小弟最近看了一些Java的書, 希望藉由這一篇短短的教學來幫助一些有C++基礎的朋友學習Java.
Java概論
Java是由Sun (昇陽)研發的一種程式語言. 其特色在於跨平台 (Platform-Independent)與物件導向 (Object-Oriented). 除了可以發展一般的應用程式, 還可以發展網頁上使用的Java Applet. 現在更有許多行動平台 (手機, PDA等) 使用Java開發軟件.
Java語法其實是出自C++. 但是相較起C++, Java的語法已經簡化許多. Java的每一隻程式本身都是一個類別, 每個類別本身也都是一隻程式, 這種理念將程式設計完全以物件導向的方式呈現.
Sun的網站上可以下載Java的開發軟件, 基本上可以分為三種不同的開發工具:
J2EE (Java 2 Enterprise Edition, Java 2 企業版, 用於開發企業專案)
J2SE (Java 2 Standard Edition, Java 2 Standard 版, 用於開發一般的程式)
J2ME (Java 2 Mobile Edition, Java 2 行動版, 用於開發行動平台的軟件, 如手機, PDA..等)
這三種版本的功用各不相同, 都是免費下載的. 小弟學習Java是下載 J2SE 1.4, 其他的工具小弟就不是很清楚.
微軟和Borland分別有推出J++與JBuilder兩套Java開發工具, 或許也是不錯的選擇.
Java基礎
從Sun的網站上下載了Windows版本的J2SE並且安裝完畢以後, 為了讓編譯的工作更容易, 小弟在這邊介紹一下要如何設定編譯的指令.
從[控制台]進入[系統]以後, 在[進階]這個Tab可以找到一個環境變數的選項.
進入環境變數以後, 按下新增.
跳出的編輯系統變數對話方塊中, 請在變數名稱的部分輸入一個名稱 (小弟是用"Java_Compiler"), 變數值則是您安裝J2SE的路徑 (如小弟是裝在"C:\j2sdk1.4.2"), 完成輸入後按下確定.
接著請再新增另一個變數, 變數名稱為"CLASSPATH", 變數值為 ".", 沒錯, 就是一個點而已.
完成以後請在系統變數的部分尋找一個叫 "Path"的變數, 並且編輯該變數的數值.
進入編輯對話方塊以後應該可以看到該變數有一段很長的值, 不要理會變數的內容, 直接跳到變數的最後, 在後面加上 ";%Java_Compiler%\bin" 這個字串 (如果您剛剛不是用Java_Compiler當作路徑變數名稱, 請記得置換). 按下確定以後就大功告成了!
Java的基本資料型態跟C++其實一樣的, 分別為 char, byte, short, int, long, float, double與boolean.
char就是字元資料型態, 可以存一個字元, 比較值得注意的是Java的char型態使用的是unicide.
byte, short, int, long都是整數資料型態, 為什麼要分成這麼多種呢? 那是因為...每一種的位元數和可存的整數長度都不同:
byte是8位元, short是16位元, int是32位元, long則是64位元.
double與float都是小數 (浮點數) 資料型態, float為32位元, double為64位元.
boolean就和C++一樣, 只能存True與False (真與偽) 兩種值.
在開始看Java的基本程式架構之前, 您必須先了解static關鍵字.
由於一隻程式本身就是一個類別, 而類別都需要創造實體才能夠被使用.
為了讓類別不需要創造實體就可以執行, 就需要用到static關鍵字. 被static修飾過的方法 (Method, 類別中的函式叫做方法) 會自動被執行, 無需創造新的物件實體.
public class TestProgram { public static void main(String[] args) { System.out.println("This is a Test Program.\n"); } }
由於這隻程式本身就是一個類別, 為了要讓程式可以被執行, 必須以public關鍵字修飾, 讓class可以對外公開.
而class名稱必須對應檔案名稱, 如此例中的class名為 TestProgram, 您就必須將這隻程式存成TestProgram.java 才能夠正常的被編譯.
而main方法 (類似C++中的main函式), 利用static關鍵字修飾以後才會自動執行.
現在就可以來試試剛剛裝好的J2SE了, 進入MS-DOS模式後, 請切換到您剛剛儲存TestProgram.java的目錄, 然後輸入指令 javac TestProgram.java.
等到動作完成以後 (代表已經編譯好了Java程式), 您可以輸入DIR來查詢目錄下的檔案列表, 您會發現剛剛的編譯工作產生了一個TestProgram.class, 沒錯, 這就是我們要的程式檔.
輸入 java TestProgram 來執行 TestProgram.class. 您應該會在螢幕上看到 This is a Test Program.的輸出, 這樣就代表程式執行無誤.
由於TestProgram.class本身是一個class, 因此執行的時候只需要輸入class名稱即可執行.
Sun的J2SE, J2EE, J2ME都是在DOS模式下執行的, 如果您不習慣的話, 可以考慮使用 Microsoft Visual J++ 或是 Borland JBuilder, 這兩套軟體都是在Windows下運作的Java編譯器. (不過要錢, 哈哈...哈哈...)
在C++中有指標和參考參數等參考資料型態, 在Java中也是大同小異. 參考資料型態 (Reference Type) 主要的目的是指向某一種實體. 就拿Java的物件宣告方式來說:
Visitor X = new Visitor();
這個範例是創造一個Visitor類別的物件實體, 物件實體的名稱為 X. (Javascript的宣告方式是學Java的)
也有人這樣寫:
Visitor X; X = new Visitor();
這樣感覺是不是有點像是在重複宣告同一個物件? 本來X就已經是Visitor的實體了, 為什麼還要再用new來宣告一次呢?
其實不然, 當您用Visitor X來創造物件的時候, 實際上是建立了一個參考指標, 而該參考指標一開始並沒有指向任何實體. 當您使用X = new Visitor()關鍵字的時候才會產生一個實體, 並且將 X 參考指標指向該實體.
其實不只是物件, 其實陣列 (Array)也算是一種參考資料型態.
Array本身並不是一個實體, 他是一個目錄 (Index), 每一個元素都分別指向一個實體, 如一個整數的陣列, 每一個元素都指向一個整數的變數. String (字串) 資料型態是一個字元的陣列, 因此理所當然的也是一種參考資料型態.