Java 入門指南 - import

利用 import ,我們可以在程式中引入自訂的套件 (package) 或 API 中的類別 (class)




import 要放在程式檔案的開頭,例如
import encryptor.Encrypt;


這樣的寫法是只有引入 Encrypt 類別,當然,我們的套件 encryptor 中目前也只有 Encrypt 類別。假設我們在 encryptor 放了很多類別,現在想要把這些類別通通一次引入到程式檔案中,可利用萬用字元星號 *
import encryptor.*;


是的,星號也是乘法運算子 (operator) ,這裡卻是屬於萬用字元,因為編譯器 (compiler) 會看符號的所在位置給符號相對應的功能,小數點 . 也一樣喔!如果小數點的前後是數字,代表浮點數的字面常數 (literal) ,小數點前後是識別字 (identifier) 的話,就表示用在類別或物件 (object) 囉!


所以使用套件 encryptor 的 EncryptDemo 如下
import encryptor.Encrypt;

public class EncryptDemo {
    public static void main(String[] args) {
        System.out.println();
        
        String s[] = {"There is no spoon.",
                      "It is all around us.",
                      "Free your mind.",
                      "Follow the white rabbit.",
                      "Choice. The problem is choice.",
                      "Action, reaction. Cause, effect.",
                      "Everything that has a beginning has an end.",
                      "Because I choose to."};        
        Encrypt e = new Encrypt();
        String t = "";
        for (int i = 0; i < 8; i++) {
            t = e.toEncode(s[i]);
            System.out.println(t);
            t = e.toDecode(t);
            System.out.println(t);
        }
         
        System.out.println();
    }
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:EncryptDemo.java
    功能:示範 Java 程式 
    作者:張凱慶
    時間:西元 2011 年 4 月 */


由於第 1 行
import encryptor.Encrypt;


已經引入 encryptor 套件中 Encrypt 類別的名稱,因此第 15 行
Encrypt e = new Encrypt();


這裡就只需要用 Encrypt 就可以了,至於編譯執行結果會跟之前一樣,所以讀者就自己試試哩 :)


不過現在對我們初學 Java ,用 import 引入自己設計套件的機會可能並不多,但有很多時候需要用到 API 的東西,使用 API 就需要使用 import ,例如以下是個猜數字程式
import java.io.*;

public class GuessGame { 
    public static void main(String[] args) throws Exception { 
        int answer = (int) (Math.random() * 10);
        InputStreamReader reader = new InputStreamReader(System.in);
        BufferedReader input = new BufferedReader(reader);
        int guess = -1;
        int i = 0;
        String s;
        
        while (answer != guess) {
            System.out.println();
            System.out.println("請輸入 0 - 9 的數字: ");
            s = input.readLine();
            char[] c = s.toCharArray(); 
            guess = (int) (c[0] - 48);
            i++;
        }
        System.out.printf("\n一共回答了 %d 次....\n\n", i); 
    }
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:GuessGame.java
    功能:示範 Java 程式 
    作者:張凱慶
    時間:西元 2011 年 4 月 */


先來編譯執行看看



這個程式很簡單,就是給使用者猜 0 到 9 之間的整數,首先,第一行 import java.io 的所有東西, java.io 就是 API 中專門處理輸出與輸入的套件,其中像
InputStreamReader 
BufferedReader


這兩個類別, InputStreamReader 與 BufferedReader 就是 java.io 中用來處理輸入的,而有一些像
Math.random()
System.in
System.out.println()
System.out.printf()


這幾個我們都沒有引入,因為這些是在 API 裡的 java.lang 套件裡的, Java 預設可以直接使用 java.lang 所定義的類別,因此不需要用 import 就能夠直接使用。


嗯,接下來我們就來概略認識 Java API 囉!


中英文術語對照
套件package
類別class
運算子operator
編譯器compiler
字面常數literal
識別字identifier
物件object


您可以繼續參考
軟體開發


相關目錄
回 Java 入門指南
回 Java 教材目錄
回首頁


參考資料
The JavaTM Tutorials: Getting Started
The JavaTM Tutorials: Learning the Java Language
The JavaTM Tutorials: Essential Classes
The Java Language Specification, Third Edition


本文於 2013 年 1 月訂正

沒有留言: