作者: 許裕永
本章是這本書最重要的部份,為了突顯本章的重要性,特別把它獨立於章節編排之外,因為沒有本章就沒有後面的章節。初學者務必在本章多下功夫,多做幾次練習。本章的範例若要完全可以執行,必須使用JDK1‧5‧0以上之版本。但如果讀者使用的是之前的版本,除了一小部份的範例無法執行之外,並不會影響讀者的學習。
Java的開發環境(JDK)可以免費取得,建議讀者可以到Oracle的官方網站上取得:http://www‧oracle‧com。
進入Oracle首頁後,點選 Middle ware 底下的Java。
找到 Java SE 的連結並進入其 Download 頁籤後選擇版本。
先選取Accept後,本頁面會重新整理。整理完,這個Accept選項便不會再出現。接下來就可以選取完整下載(Offline),或線上安裝(Online)。
1-2 安裝
下載的安裝程式會安裝兩個工具。一個是JDK,是Java的開發工具;另一個是JRE,是Java的執行環境。安裝的流程和一般程式沒有什麼不同,唯一建議讀者的是:變更預設的安裝路徑。
預設的安裝路徑是:“c:\Program File\Java\jdk_1‧5‧0_10\”。一方面路徑名稱太複雜,另一方面資料夾名稱之中有空格, 可能會造成初學者後續在DOS視窗中操作上的困擾,所以建議修改。例如在安裝JDK時改為:“D:\Java\JDK”,在安裝JRE時改為: “D:\Java\JRE”。(當然不一定要安裝在D磁碟)
2-1 開啟DOS視窗
在Windows XP(NT,2000)的環境之中可以在附屬應用程式中找到“命令提示字元”,或在「執行」的對話方塊中輸入cmd,均可以開啟DOS視窗。
在Windows 98(95,ME)的環境之中可以在程式集找到“MS-DOS”,開啟DOS視窗。
2-2 基本指令
切換工作目錄:>cd 路徑。
把目錄切換到執行檔案的位置,可以避免執行檔案時,輸入一串的檔案路徑。
例:
>cd D:\Java\JDK\bin
或
>cd C:\Documents and Settings\Administrator\My Documents\
執行檔案:>檔案名稱 或 >檔案完整路徑。
若要執行的檔案位於目前的工作目錄,直接輸入檔案名稱即可執行。
例:
>cd c:\WINNT
>notepad
如此可開啟記事本。
若要執行的檔案並不在目前的工作目錄,則必須輸入完整的檔案路徑。
例:
>cd c:\WINNT\notepad
如此亦可開啟記事本
清除畫面:>cls
協助:>help
網路上有一些免費的Java編輯軟體,可以協助Java的開發。其實Oracle公司也有官方版的視覺化整合開發環境(NetBeans),也是免費的。 但那是提供給已經學會Java的設計師用的,不是給初學者用的。如果初學者打好基礎前便使用這些軟體,會少學很多基礎動作,不見得是好事情。
3-1 撰寫
撰寫程式碼時,有一些注意事項:1、大小寫要分清楚。在Java中,無論是程式碼或檔案名稱,英文字母的大小寫必須區分清楚。2、左右括號一起打。無論是 大括號或小括號,建議讀者一定要養成左右括號一起打完,再用方向鍵回到括號中,輸入括號內的程式碼。因為日後括號中還有括號的寫法,十分常見,養成這個習 慣,將來可以省下非常多的除錯時間。3、大括號中的內容統一縮排一個Tab(或空格)。每一層次大括號的內容都往後縮排,可以增加程式碼的可讀性,也方便 除錯。
請打開記事本後,輸入下列程式碼:
//My first java program.
public class JavaTest{
public static void main(String[] args){
System.out.println("Hello World!");
}
}
3-2 存檔
存檔時必須注意兩件事:1、檔案名稱必須和class名稱一模一樣(含大小寫)。class名稱指的是撰寫於關鍵字“class”之後的名稱,本例即為“JavaTest”。2、副檔名必須是“‧java”。
為了統一儲存我們後續撰寫的範例,請大家在“我的文件夾”之中,建立一個新的資料夾“MyJava”(名稱可以自訂),然後把剛才的檔案儲存在此資料夾之中。後續我們將稱呼這種撰寫程式碼的檔案為「程式碼檔」。
特別注意:在部份的作業系統之中,用記事本撰寫的檔案儲存時會預設副檔名為“‧txt”。為了避免這個困擾,請各位在儲存時,於檔案名稱前後加上雙引號,例:“JavaTest‧java”。
開啟DOS視窗後,執行兩道指令:
1、切換工作目錄到儲存程式碼檔的資料夾。
例:>cd C:\Documents and Settings\Administrator\My Documents\MyJava
(可以在資料夾視窗中的網址列複製,再用快顯功能表貼上)
2、執行JDK提供的編譯工具javac‧exe(此檔案的實際路徑是在:“安裝目錄\bin”)。並以程式碼檔的檔案名稱為參數置於javac的後方。
例:>d:\Java\JDK\bin\javac JavaTest.java
因為javac‧exe檔並不在目前的工作目錄,所以要用完整的檔案路徑,副檔名(‧exe)可以省略。而JavaTest‧java在目前的工作目錄之中,所以直接輸入檔案名稱即可,但副檔案(‧java)不可以省略。
4-1 編譯成功
如果編譯成功,工作目錄裏會新增一個class檔,檔名:「JavaTest‧class」。
4-2 編譯失敗
錯誤訊息:'c:\Program' 不是內部或外部命令、
可執行的程式或批次檔。
讀者在安裝JDK時,並沒有修改安裝路徑,所以適才輸入的指令是預設的安裝目錄,但是因為路徑中有空格,所以DOS視窗無法接受。
排除方式:先跳過本節及第五節,先看第六節,看完後再回來執行。
錯誤訊息:'javac' 不是內部或外部命令、
可執行的程式或批次檔。
排除方式:javac的檔案路徑錯誤,修改後再執行。如果還是無法編譯,請確認javac‧exe是否有安裝在“安裝目錄\bin”之中。如果沒有,表示安裝失敗,請移除後再重新安裝。
錯誤訊息:error: cannot read: JavaTest.java。
無法讀取指定的程式碼檔。
排除方式:
2、 檢查檔案是否在工作目錄之中。
3、 檢查檔案名稱是否錯誤(大小寫一定要一樣)。
4、 檢查副檔名是否被作業系統改為預設的“‧txt”。
開啟資料夾視窗,在 工具\資料夾選項\檢視 中有許多選項,請取消選項「隱藏已知檔案類型的副檔案」的選取後按確定。再回來看資料夾中的檔案 “JavaTest‧java”是否被作業系統改為”JavaTest‧java‧txt“。如果是,直接變更檔案名稱,將”‧txt“刪掉即可。
^
system.out.println("Hello World!");
此類錯誤訊息均會提示行號(JavaTest‧java:4),還會有一個︿的記號,來提示錯誤出現的位置方便設計師除錯。如果錯誤有一個以上,請記得從 第一個錯誤開始處理,因為下面的錯誤可能是由它而產生的。另外,有時候不是標示的那一行出問題,而是標示的上一行。總而言之,標示位置的上、下、左、右都 仔細看看。每修改一個錯誤後,存檔再編譯。
排除方式:
2、 ‘‧’是否打成‘,’。
3、 是否少打一個‘”’。
4、 是否忘記‘;’。
5、 是否忘記右括號(大,小括號都有可能)。
6、 類別名稱是否和檔案名稱一模一樣。
Java程式的執行,不是由作業系統執行。而是由Java虛擬機器(JVM)執行。也就是說:「任何作業系統,只要有安裝JVM,就可以執行Java的程式(class檔)」。所以Java是可以開發跨平台程式的程式語言。
開啟DOS視窗後,執行下列指令:
以本例而言,class檔的位置並沒有移動,所以DOS視窗的工作目錄也不必切換,但如果剛才讀者的DOS視窗是重新開啟的話,請按照編譯時的方式切換工作目錄。
2、 執行JDK提供的程式執行工具:java‧exe(儲存位置和javac‧exe一樣)。並以class檔的檔案名稱為參數,置於java的後方。特別注意:class檔的副檔名(‧class)一定要省略。
例:> d:\Java\JDK\bin\java JavaTest。
列印結果:Hello World!
5-2 執行失敗
錯誤訊息:'java' 不是內部或外部命令、
可執行的程式或批次檔。
程式執行工具java‧exe的路徑輸入錯誤。
排除方式:路徑修改後再執行。
錯誤訊息:Exception in thread "main" java.lang.NoClassDefFoundError: JavaTest/
找不到要執行的class檔。
排除方式:
2、 class檔是否不在工作目錄中。
3、 可能有其他軟體安裝時設定了classpath。請在DOS視窗中輸入下列指令後,再執行:
>set classpath=.
請注意,‘=’後方接一個‘‧’就好,其他什麼都不要加。
如果set classpath之後就可以執行,表示以後開啟的每一個DOS視窗都要輸入此指令。或者可以參考下一節的說明,修改環璄變數classpath,在該參數值的最前面加上“‧;”。
程式碼中main那一行敍述句輸入錯誤。
排除方式:修改後存檔、編譯再執行。
作業系統提供了一個環境變數叫「path」,path中可以用‘,’區隔,儲存多個路徑。當我們要執行的檔案不在工作目錄時,作業系統會依序到所有 path儲存的路徑中尋找。所以我們可以把存放javac及java的資料夾路徑,儲存於path之中。這樣我們要執行javac或java時,便不必輸 入完整路徑。
6-1 Dos中設定
將JDK的安裝資料夾中的子資料夾bin的路徑設為path。因為javac‧exe及java‧exe均安裝於此資料夾。
在DOS視窗中輸入下列指令:
>set path=d:\Java\JDK\bin
如果沒有變更JDK的安裝預設目錄的話,則是:
>set path=c:\Program Files\Java\jdk1.5.0_10\bin
此路徑並非絕對,請讀者自行依照實際的安裝目錄設定。
輸入完成後,在本DOS視窗執行javac及java時便不必再輸入完整路徑。
6-2 系統中設定
在DOS視窗中用指令設定的path,只適用於該視窗。重新開啟的DOS視窗,必須另行設定。如果讀者覺得麻煩(其實不會),可以直接設定作業系統中的環境變數(其實不建議)。(NT,2000,XP適用)
桌面\我的電腦\滑鼠右鍵\內容\進階\環境變數
或
控制台\效能及維護\系統\內容\進階\環境變數
均可看到下圖:
選取Path後按編輯,後出現下圖。
請特別注意:若操作上有不當之處應立刻按「取消」,避免原設定值被變更而造成部份系統指令無法執行。
此視窗出現時,變數值欄位是呈現選取狀態的,此時應按下鍵盤的「End」,把文字插入點置於最後方,然後輸入“;D:\Java\JDK\bin”。請注意第一個字元是‘;’,表示與前面的路徑區隔。
輸入完成後按「確定」,然後重新開啟的DOS視窗,便可以直接輸入javac及java來執行了。
在DOS視窗中輸入:“>javac -help” 及“>java -help”。便可以看到這兩個工具的參數說明。
7-1 javac常用參數
-sourcepath
設定程式碼檔的路徑。若要編譯的程式碼檔,不在目前DOS視窗的工作目錄之中,或分散於多個資料夾的時候適用。
例:
2、 輸入:>javac -sourcepath c:\ JavaTest‧java
-classpath(-cp)
設定程式碼中有使用到的所有類別的路徑。若程式碼中有使用其他自訂的類別時,指定該類別的儲存路徑。(後續章節介紹)
-d
設定本程式碼檔編譯後的class檔的存放路徑。
例:
輸入:>javac -sourcepath c:\ -d c:\ JavaTest‧java
執行結果:class檔將儲存於c:\之中。
(每個參數與參數值均用空格區格)
7-2 java常用參數
-classpath(-cp)
設定程式碼中有使用到的所有類別的路徑。若程式碼中有使用其他自訂的類別時,指定該類別的儲存路徑。(後續章節介紹)
-ea
開啟Asserion機制。(後續章節介紹)
8-1 敍述句(Statement)
程式碼的基本單位是敍述句,每一句敍述句均以‘;’結尾。每一句敍述句可以包含任意個運算式。
例:
int a=5;
int a=5,b=6;
int c=a+b;
c=a*5+b*6+(a-b);
以上共四句敍述句。
int a=5,
b=6;
此亦為一句敍述句。(以‘;’為敍述句結尾,換行並不影響敍述句的判別)
int a=5;int b=6;
以上為兩句敍述句。(以‘;’為敍述句判別依據)
8-2 方法(Method)
集合敍述句的單位,置於類別之中。DOS視窗可以執行的程式,我們稱之為Java Application,此程式的類別之中,一定要有一個名稱叫做main的方法。其寫法必須是:
public static void main(String[] args){
敍述句;
敍述句;
}
除了小括號中的args可以自訂之外,其他文字均不可變動。讀者先不必知道為什麼,先照打就對了。
8-3 類別(Class)
集合方法的單位,類別之中除了宣告變數的敍述句之外,不可以有任何其他敍述句,敍述句必須集合在方法之中,再把方法集合在類別之中,類別中可以有任意個方法。類別名稱必須和檔案名稱一模一樣。類別名稱建議以大寫英文字母開頭。
其寫法為:
class ClassName{
public static void main(String[] args){
敍述句;
敍述句;
}
}
同一個資料夾中的程式碼檔,其檔案名稱最好不要有太多重複的文字。例:Test1、Test2、Test3………。這樣會造成執行時JVM識別上的因擾, 可能執行的檔案會和你預期的不一樣。另外自訂的類別名稱,也不要和Java中預設的類別名稱重複,否則日後你會浪費相當多的時間,才能找到這種邏輯錯誤。
8-4 註解
註解是程式碼中不可缺少的元素。當然練習用的範例不見得要註解,但日後實務開發時,是一定不可以少的。註解除了可以讓別人了解你這支程式的功能,也可以讓自己更容易掌握專案開發的進度。
你知道程式設計師最無奈的事情是什麼嗎?就是花一堆時間來研究自己以前寫的程式碼。
單行註解://…………。
撰寫於“//”之後的同一行文字,編譯時編譯器會跳過。
多行註解:/*………*/。
撰寫於“/*”與“*/之間的文字,無論有幾行,均為註解。
文件註解:/**………*/
此類註解撰寫在宣告句之前。在使用javadoc‧exe來製作說明文件時,這些註解文字會出現在說明文件之中。(後續章節介紹)
註解還有一個實用性的功能:除錯。不過這是針對邏輯錯誤,也就是當編譯成功,但執行的結果和我們的預期不同的時候,我們把某一段程式碼改成註解,藉以觀察其他程式碼的執行結果,來判斷問題點。
9-1 輸入
2、 在main中的第一行輸入:
Scanner s=new Scanner(System‧in);
3、 s可以重複使用。
4、 用s‧next()可以接收鍵盤輸入文字。
5、 用s‧nextInt()可以接收鍵盤輸入整數數字。
6、 用s‧nextDouble()可以接收鍵盤輸入有小數點的數字。
2、用System‧out‧print()可以在螢幕上列印小括號中的值,列印後不會換行。
import java.util.*;
public class InputOutputTest{
public static void main(String[] args){
Scanner s=new Scanner(System.in);
System.out.print("Please input your name:");
String name=s.next();
System.out.print("Please input your age:");
int age=s.nextInt();
System.out.print("Please input your height:");
double height=s.nextDouble();
System.out.println("Hi!" + name + ".");
System.out.println("Your age is " + age + ".");
System.out.println("Your height is " + height + ".");
}
}
執行結果:
Please input your name:Yung
Please input your age:18
Please input your height:175.5
Hi!Yung.
Your age is 18.
Your height is 175.5.
示範主題:1:接收輸入之前應該先執行適當的輸出,來提示期望使用者輸入的內容。2、用s接收不同資料的輸入並指派給不同型別的變數。3、輸出的小括號中用‘+’串聯不同型別的資料。4、輸出的print及println使用時機的不同。
例二:(本例適用於JDK5‧0以前之版本,使用JDK5‧0之讀者不必練習)
//import 的package為io
import java.io.*;
public class InputOutputTest{
//main()須加throws IOException
public static void main(String[] args)throws IOException{
//輸入物件為BufferedReader物件
BufferedReader keyin=new BufferedReader(
new InputStreamReader(System.in));
//接收文字輸入
System.out.print("Please input your name:");
String name=keyin.readLine();
//接收整數數字輸入
System.out.print("Please input your age:");
int age=Integer.parseInt(keyin.readLine());
//接收小數點數字輸入
System.out.print("Please input your height:");
double height=Double.parseDouble(keyin.readLine());
System.out.println("Hi!" + name + ".");
System.out.println("Your age is " + age + ".");
System.out.println("Your height is " + height + ".");
}
}
執行結果:同例一。
示範主題:JDK5‧0之前版本的輸入程式敍述。
中文化的說明文件中其內容和原文有相當的落差,專業用詞也不一樣。更何況,各位要想像一下,數年後你可能是某一家跨國公司的程式開發人員,貴公司開發的程式會有中文的說明文件嗎?你想太多了。早點習慣原文的開發環境,是一件好事情。加油!
10-1 下載及解壓縮
Oracle的官方網站,在下載 Document 的頁面中,往下移動捲軸即可看到JDK文件的進入點:
10-2 閱讀說明文件
文件的起始頁開啟後可以看到三個頁框的頁面。左上角的頁框是package的名稱,左下角的頁框顯示指定的package的內容,右側頁框顯示左下角指定的類別或界面的內容。