Google Prettify

2015-05-19

你的第一隻Java程式─Hello World

圖片引用自bestmag.net

一開始學習語言,我的慣例都會先給hello world!! 可惜在Hello world之前,還是有一些事必需要做,也有一些東西必需要先了解…

安裝

Java 下載

先別急著想打開文字編輯器,copy 一份程式碼,然後paste上去。 理由除了你必需要先了解你在copy 些啥鬼之外,你還必需先安裝Java,不然你paste完後,你會不知道如何去執行他。 不過題外話,在初學階段,我還是強烈建議你純手動敲一次程式碼。

你必需先到Java 官網去下載Jdk。 目前(2015/5) Java的維護者是Oracle;基本上你在網路上打了關鍵字去搜尋一下,應該就會對了。我先列出連結,但很可能在未來不久的日子裡,這個連結會失效。

下載版本有幾點需要注意:

  1. 符合你的作業系統
  2. Java SE。 注意,不是Java EE。
  3. JDK。注意,不是JRE。

如果你不清楚Java SE與Java EE的差別,或是JDK與JRE的差別,你可以參考Java 101-Overview

下載下來之後,就是無腦安裝的「下一步」、「下一步」…。(Windows 限定)

僅管是無腦安裝,我還是很建議你,仔細看看你安裝了些啥鬼。或許你現在還不知道你道底安裝了些啥,但在往後的日子裡,你將會學到這些東西。

環境設定

安裝完後,你必需再設定3個環境變數。

  1. JAVA_HOME。 指到你剛安裝的Jave的目錄。

  2. CALSSPATH。 用「;」設定2個值:1個是你的工作目錄─「.」;1個是JAVA_HOME\lib裡的tools.jar

  3. PATH;指向JAVA_HOME裡的bin目錄。

環境設定:這是尛?

JAVA_HOME,是說明你目前的工作環境下,你正在執行那一個Java。 這表示,你可以在同一一台機器下,安裝多個JDK與JRE。

CLASSPATH;是告訴Java─其實是告訴JVM─你可以引用的其他的模組或函式庫。 因為我還沒有介紹什麼是library,所以就先用「模組」、「函式庫」這樣的翻譯名詞…。好吧,library就是「函式庫」。 如果你還對什麼是「函式庫」或是「模組」還很模糊,沒關係,就先暫時打住,在往後的日子裡,你終究會體會到。現在還只是hello world... 。

tools.jar這個函式,就是在你編譯程式時,會用到的一個函式庫。原則上Java的函式庫,副檔名都是用.jar其實這只是一個簡單的壓縮檔,沒什麼特殊的編碼內容。你可以使用WinRAR或是WinZip,或是任何一套可以解壓縮的程式,來檢視其內容。

PATH;這是告訴作業系統你的程式要到那些路徑下去搜尋java.exe這個執行檔。

可以Hello World了嗎?

還不行。 到目前為止,你大致完成一個HelloWorld的前置準備。接下來,你還差一個文字編輯器。

你可以使用任意一款文字編輯器,但是要注意一點,就是儲存格式需要可以儲存成UTF-8 without BOM 或是編碼格式。

BOM是…一種東西;雖然會越帶越多,不過為了滿足一部分讀者的好奇心,還是要簡單帶過一下,更多的就需要再另外開篇幅了。 BOM是Byte-Order Mark,是編輯軟體在存檔時,在檔案前面加的一個註記,說明這檔案的詳細格式。 UTF-8 with BOM是微軟專用的格式。 Java 一般開發採用這種;所以一般使用without BOM。

我要Hello World~~

開始Hello World

好吧!! 我們真的可以開始撰寫一個Hello World了。

  1. 請找一個乾淨的目錄。 這個目錄會是你的工作目錄。 我的demo會是這樣:
    d:\Temps\JavaTutoDemo
    
  2. 在這裡面建一個目錄。
    d:\Temps\JavaTutoDemo\bookstore
    
  3. 請打開你剛準備的文字篇輯器,開始敲程式碼了。 產生一個名為BookStore.java的檔案。 敲入以下程式碼;然後以UTF-8 without BOM的格式存到bookstore目錄下。
    package bookstore;
    public class BookStore{
    public static void main(String[] args){
     System.out.println("Hello Java");
     }
    }
    
  4. 使用命令列模式,到工作本位目錄(JavaTutoDemo),執行以下命令:
    d:\Temps\JavaTutoDemo>javac -encoding utf-8 bookstore\BookStore.java
    d:\Temps\JavaTutoDemo>java bookstore.BookStore
    Hello Java
    

學而不知則罔

繼之前的三個小之後,還是需要講解一下你剛才到底打了些什麼東西。 雖然我並不是很喜歡古文的那些之乎則也,也覺得那些早該作古的東西,十之八九不應該還存在在這個世界,不過有時候,還真的必須佩服那些古人,可以在那麼久遠的年代,就發現那些即使是在現在,也還應該存在於這個世界的那些十之一二的部份。

圖片引用自http://www.23yy.com

  1. 檔案BookStore.java的第一行,是package的宣告。 所謂的package,你可以將他視為一群程式。將相同性質的程式放在一塊,就是一個package。 Package名稱必需跟目錄名稱相同

  2. 第二是行宣告一個類別。 有關於類別,未來還會再談到更多。 現在,你就當類別…就是一個類別。 class是關鍵字; 說明我正在宣告一個類別。類別名稱必需跟檔案名稱相同

  3. 第三行,是宣告一個函式。以Java的專用術語,我們叫method。C、其他的程式語言、或是計算機概論中,稱為函式或叫function;在目前你可以先將他視為是相同的東西,不過在物件導向中,這是有很大的差別。

  4. static 是關鍵字,有著特殊的意思,他代表著這個method應該是由class來執行。我在之後的文章裡會再詳細提到這點。

  5. String 在這裡是一個種資料型別。在Java裡面,他當然是一種class,而這個class的名稱叫做String。 不過我們在這裡,就先把他視為是一個字串吧! 就好像 "This is a string" 這樣的一個字串。

  6. [] 是表示陣列,所以String[]就是字串陣列的意思。

  7. 所以, 這一行的意思是說,我宣告一個static的method,名字叫做main,他有1個輸入參數,參數名稱叫args,型態是String[]

  8. 第四行執行的動作,就是列印出一個"Hello Java"字串。

  9. 在第4動,執行了2個命令。 第一個命令,是產生執行檔。 javac的c 是Compilier的意思。 你可以看bookstore目錄裡,多了一個BookStore.class的檔案。Java在執行時就是執行這個檔案。

  10. 第四動的第二個令命則是直接執行這個執行檔。 注意,這裡不能加class副檔名。 從作業系統執行的method,永遠是static method,而且名稱永遠叫main。這也就是為什麼我們可以直接由作業系統直接執行這個Hello world的原因。

前面我沒有提到的

前面我沒有提到的是:

  1. Java的世界裡是區分大小寫的。如果你在練習的當中有發生任何錯誤,確定一下是不是大小寫有打錯…。
  2. 開發慣例上,package的名稱一律都是小寫。Class是以大寫開頭的Camel style。例如BookStoreHelloWorld。Method以小寫開的的Camel style,例如buyBooktakeOrder或是order

結語

到目前為止,你已經做出一個沒啥用處Hello Java程式。 僅管程式本身沒啥用處,但是裡面所隱藏的知識不少。 你應該知這了CLASSPATH、PATH、JAVA_HOME的用處、還有建立一個java程式的文法、結構、與宣告方式。 如果想學好一門程式語言,最好的方法,還是要實際下去演練一遍。

1 則留言 :

施佑達 提到...

在所有的Java 教本中,看到的static main() method中,參數名稱都叫args。為此,我曾經一度以為這必需是某種原因需要這麼寫、需要用"args"。其實不是這樣的。這…只是真大家都這這麼寫而已,這只是參數名稱,不一定非得用"args"做為接受參數的變數名稱。public static main(String[] param)也是可以的。大家別犯了跟我一樣的錯誤啊。

您或許對這些有興趣

Related Posts with Thumbnails

最後

謝謝您的閱讀,希望您可以有豐富的收獲。