從 C++ 到 Java : 入門級爪哇程式練習
- 實驗環境:請至 http://hadoop.nchc.org.tw 申請帳號,並用網頁帳號登入系統,或用 SSH 系統帳號登入系統。
- 註:Windows 操作請參考2009-07-06 成大工科實習生 Java 教學(一)
練習一: 基本爪哇程式編譯指令與執行方法
- 下載 Java Tutorial 的 HelloWorldApp.java 範例程式原始碼
hadoop004@hadoop:~$ wget http://java.sun.com/docs/books/tutorial/getStarted/application/examples/HelloWorldApp.java hadoop004@hadoop:~$ javac HelloWorldApp.java
- 執行 HelloWorldApp 範例程式
hadoop004@hadoop:~$ java HelloWorldApp
- 程式解說:
- Java 程式原始碼,檔案名稱必須與類別名稱一致。一個程式原始碼若有多於一個的類別,只有一個可以是 public 類別,其餘必須是 private 或內部類別(inner class)。若不加 public 或 private 預留關鍵字,則預設為 private 類別。
class HelloWorldApp { // 未註明時預設為 private 類別
- 驗證一:試著把 HelloWorldApp.java 更名為 HelloWorld.java 然後重新編譯。結果:會過!!因為是 private 類別 ~
hadoop004@hadoop:~$ mv HelloWorldApp.java HelloWorld.java hadoop004@hadoop:~$ javac HelloWorld.java
- 驗證二:試著修改 HelloWorld.java 的程式,在類別前加入 public 關鍵字,然後重新編譯。結果:有錯誤訊息!! 因為是 public 類別 ~
public class HelloWorldApp { // 若 public 類別名稱為 HelloWorldApp ,程式碼檔名也必須為 HelloWorldApp.java
hadoop004@hadoop:~$ javac HelloWorld.java HelloWorld.java:36: class HelloWorldApp is public, should be declared in a file named HelloWorldApp.java public class HelloWorldApp { ^ 1 error
- Java 程式原始碼,檔案名稱必須與類別名稱一致。一個程式原始碼若有多於一個的類別,只有一個可以是 public 類別,其餘必須是 private 或內部類別(inner class)。若不加 public 或 private 預留關鍵字,則預設為 private 類別。
- 與 C/C++ 相似,Java Application 主程式的進入點為 main 函數,唯其型態比較複雜,必須為 public static void,宣告為 public 其他類別才可以呼叫,宣告為 static 才能直接透過類別名稱呼叫,void 代表沒有回傳値。程式的參數以 String 類別型態傳入,類似 C/C++ 的 argv 變數。註:若要撰寫可以鑲嵌在網頁的程式,必須繼承 Applet 類別,其進入點就不是 main 函數,而是 init 函數。
public static void main(String[] args)
- Java Application (類似 DOS 底下的 C/C++ 命令列程式) 可以用 System.out.println() 函數來顯示字串,可想成對應 C 的 printf() 函數,或 C++ 的 cout。註:從物件導向的觀念來看,out 是 System 類別的 static field,因此可以直接透過類別名稱取得。out 的型態是 PrintStream,所以可以直接透過 out 這個 PrintStream 物件來呼叫 print(String s) 函數。
System.out.println("Hello World!");
練習二:慢慢長大的類別 ─ public, private, field, method
- 讓我們來練習設計一個複雜一點的類別,若是以 UML (Unified Modeling Language) 來呈現的話,大致上可以畫成底下這張圖:
hadoop004@hadoop:~$ cat > Test.java <<EOF import java.io.*; import java.lang.String; public class Test { public String myData; public String getMyData() { return myData; } public void setMyData(String data) { myData = new String(data); } public static void main(String args[]) { Test myTest = new Test(); myTest.setMyData("This is a test"); System.out.print(myTest.getMyData()); } } EOF
- 嘗試編譯,並觀察結果
hadoop004@hadoop:~$ javac Test.java hadoop004@hadoop:~$ java Test
- 根據上圖,嘗試加入
Last modified 15 years ago
Last modified on May 1, 2010, 1:56:06 PM
Attachments (1)
- Test_HW01.png (9.3 KB) - added by jazz 15 years ago.
Download all attachments as: .zip