一開始學習語言,我的慣例都會先給hello world!! 可惜在Hello world之前,還是有一些事必需要做,也有一些東西必需要先了解…
安裝
Java 下載
先別急著想打開文字編輯器,copy 一份程式碼,然後paste上去。 理由除了你必需要先了解你在copy 些啥鬼之外,你還必需先安裝Java,不然你paste完後,你會不知道如何去執行他。 不過題外話,在初學階段,我還是強烈建議你純手動敲一次程式碼。
你必需先到Java 官網去下載Jdk。 目前(2015/5) Java的維護者是Oracle;基本上你在網路上打了關鍵字去搜尋一下,應該就會對了。我先列出連結,但很可能在未來不久的日子裡,這個連結會失效。
下載版本有幾點需要注意:
- 符合你的作業系統
- Java SE。 注意,不是Java EE。
- JDK。注意,不是JRE。
如果你不清楚Java SE與Java EE的差別,或是JDK與JRE的差別,你可以參考Java 101-Overview。
下載下來之後,就是無腦安裝的「下一步」、「下一步」…。(Windows 限定)
僅管是無腦安裝,我還是很建議你,仔細看看你安裝了些啥鬼。或許你現在還不知道你道底安裝了些啥,但在往後的日子裡,你將會學到這些東西。
環境設定
安裝完後,你必需再設定3個環境變數。
JAVA_HOME
。 指到你剛安裝的Jave的目錄。
CALSSPATH
。 用「;」設定2個值:1個是你的工作目錄─「.」;1個是JAVA_HOME\lib
裡的tools.jar
。
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了。
- 請找一個乾淨的目錄。 這個目錄會是你的工作目錄。 我的demo會是這樣:
d:\Temps\JavaTutoDemo
- 在這裡面建一個目錄。
d:\Temps\JavaTutoDemo\bookstore
- 請打開你剛準備的文字篇輯器,開始敲程式碼了。 產生一個名為
BookStore.java
的檔案。 敲入以下程式碼;然後以UTF-8 without BOM的格式存到bookstore目錄下。package bookstore; public class BookStore{ public static void main(String[] args){ System.out.println("Hello Java"); } }
- 使用命令列模式,到工作本位目錄(JavaTutoDemo),執行以下命令:
d:\Temps\JavaTutoDemo>javac -encoding utf-8 bookstore\BookStore.java d:\Temps\JavaTutoDemo>java bookstore.BookStore Hello Java
學而不知則罔
繼之前的三個小之後,還是需要講解一下你剛才到底打了些什麼東西。 雖然我並不是很喜歡古文的那些之乎則也,也覺得那些早該作古的東西,十之八九不應該還存在在這個世界,不過有時候,還真的必須佩服那些古人,可以在那麼久遠的年代,就發現那些即使是在現在,也還應該存在於這個世界的那些十之一二的部份。
圖片引用自http://www.23yy.com檔案BookStore.java的第一行,是package的宣告。 所謂的package,你可以將他視為一群程式。將相同性質的程式放在一塊,就是一個package。 Package名稱必需跟目錄名稱相同。
第二是行宣告一個類別。 有關於類別,未來還會再談到更多。 現在,你就當類別…就是一個類別。
class
是關鍵字; 說明我正在宣告一個類別。類別名稱必需跟檔案名稱相同第三行,是宣告一個函式。以Java的專用術語,我們叫method。C、其他的程式語言、或是計算機概論中,稱為函式或叫function;在目前你可以先將他視為是相同的東西,不過在物件導向中,這是有很大的差別。
static
是關鍵字,有著特殊的意思,他代表著這個method應該是由class來執行。我在之後的文章裡會再詳細提到這點。String
在這裡是一個種資料型別。在Java裡面,他當然是一種class,而這個class的名稱叫做String
。 不過我們在這裡,就先把他視為是一個字串吧! 就好像 "This is a string" 這樣的一個字串。[]
是表示陣列,所以String[]
就是字串陣列的意思。所以, 這一行的意思是說,我宣告一個static的method,名字叫做
main
,他有1個輸入參數,參數名稱叫args
,型態是String[]
。第四行執行的動作,就是列印出一個"Hello Java"字串。
在第4動,執行了2個命令。 第一個命令,是產生執行檔。 javac的c 是Compilier的意思。 你可以看bookstore目錄裡,多了一個
BookStore.class
的檔案。Java在執行時就是執行這個檔案。第四動的第二個令命則是直接執行這個執行檔。 注意,這裡不能加class副檔名。 從作業系統執行的method,永遠是static method,而且名稱永遠叫
main
。這也就是為什麼我們可以直接由作業系統直接執行這個Hello world的原因。
前面我沒有提到的
前面我沒有提到的是:
- Java的世界裡是區分大小寫的。如果你在練習的當中有發生任何錯誤,確定一下是不是大小寫有打錯…。
- 開發慣例上,package的名稱一律都是小寫。Class是以大寫開頭的Camel style。例如
BookStore
、HelloWorld
。Method以小寫開的的Camel style,例如buyBook
、takeOrder
或是order
。
結語
到目前為止,你已經做出一個沒啥用處Hello Java程式。 僅管程式本身沒啥用處,但是裡面所隱藏的知識不少。 你應該知這了CLASSPATH、PATH、JAVA_HOME的用處、還有建立一個java程式的文法、結構、與宣告方式。 如果想學好一門程式語言,最好的方法,還是要實際下去演練一遍。
1 則留言 :
在所有的Java 教本中,看到的static main() method中,參數名稱都叫args。為此,我曾經一度以為這必需是某種原因需要這麼寫、需要用"args"。其實不是這樣的。這…只是真大家都這這麼寫而已,這只是參數名稱,不一定非得用"args"做為接受參數的變數名稱。public static main(String[] param)也是可以的。大家別犯了跟我一樣的錯誤啊。
張貼留言