# 開發環境 ###### tags: `java` ## Microsoft Visual Studio Code #### 優點 1. 跨平台 2. 輕量,執行速度快 3. 可透過插件擴充功能 4. 社群活躍,資源豐富 #### 安裝 1. 下載Coding Pack for Java MacOS版本下載點:https://aka.ms/vscode-java-installer-mac Windows版本下載點:https://aka.ms/vscode-java-installer-win 2. 安裝Coding Pack for Java,Coding Pack會做下面事情: - 下載/安裝JDK(Java開發套件)。 - 下載/安裝Visual Studio Code編輯器。 - 設定Java環境。 - 安裝Java擴充功能。 > 補充: > > 如果需要繁體中文環境,可以安裝「Chinese(Traditional)Language」擴充功能。 #### 常用快速鍵 | 功能 | MacOS | Windows | | ---------------------- | ------------------ | ------------------- | | 執行程式 | `CTRL`+`F5` | `Ctrl`+`F5` | | 打開指令面板 | `CMD`+`Shift`+`P` | `Ctrl`+`Shift`+`P` | | 格式化程式碼 | `Alt`+`Shift`+`F` | `Alt`+`Shift`+`F` | | 存檔 | `CMD`+`S` | `CTRL`+`S` | | 註解程式碼 | `CMD`+`/` | `CTRL`+`/` | | 切換到下一個打開的檔案 | `CTRL`+`TAB` | `CTRL`+`TAB` | | 關閉目前檔案 | `CMD`+`W` | `CTRL`+`W` | | 跳到方法定義 | `CMD`+`Left Click` | `CTRL`+`Left Click` | | 復原修改 | `CMD`+`Z` | `CTRL`+`Z` | | 取消復原 | `CMD`+`Shift`+`Z` | `CTRL`+`Shift`+`Z` | | 程式碼提示 | `CTRL`+`空白鍵` | `CTRL`+`空白鍵` | | 多重游標分身 | `Alt`+`Left Click` | `Alt`+`Left Click` | ## 第一個程式 #### 建立Java專案 > 提示:選擇No build tools ``` public class App { public static void main(String[] args) throws Exception { System.out.println("Hello, World!"); } } ``` 按下`CTRL`+`F5`執行程式,如果沒有錯誤,會在TERMINAL視窗看到下面結果輸出: ``` Hello, World! ``` 到此表示開發環境安裝完成。 #### 解說 1. 定義類別(Class) Java為物件導向語言,程式通常都是由定義「類別」開始,`class` 是 Java 用來定義類別的關鍵字,範例中類別的名稱是App,原始碼檔名必須與類別名稱相同(HelloJava.java),App類別前面的public關鍵字代表公開,可以給外部使用,而程式進入點的類別則比須定義為public,否則程式無法執行。 一個檔案中可以有複數個類別,但是只能有一個公開(public)類別,而且檔案主檔名必須與這個公開類別的名稱相同,在定義類別名稱時,習慣上將類別名稱是每個單字的第一個字母大寫,並且類別名稱代表該類別的功用。 2. 定義類別區塊(Class Block) Java程式使用大括號 `{` 與 `}` 來定義區塊,大括號必須兩兩成對,表示該類別定義的作用範圍。 3. 定義 main() 方法(Method) main()為一個方法,而且是一個特殊方法,它是 Java 程式的「進入點」(Entry point),程式的執行是由進入點開始的,main() 方法必須為「public」這樣它才可以執行環境(JVM)呼叫;main() 方法不需要產生物件(Object)就能被執行,所以它必須是個「static」方法;「public」與 「static」的觀念都是Java 物件導向(Object-oriented)的一部分,會在物件導向章節再行解說。 `main()`法前面的「void」關鍵字表示`main()`執行結束後不傳回任何值,Java 程式的`main()`方法不需傳回任何值,所以固定都是void型態;`main()`方法小括號間的 `String[] args` 為執行啟動時取得使用者輸入的命令列引數(Command line argument),即使目前用不到,還是得寫上去,因為這是Java的規定。 4. 定義方法區塊(Method Block) 方法區塊與類別區塊的用途類似,都是為了定義作用範圍,而方法區塊用來定義該方法的作用範圍。 > 補充: > 定義區塊的風格因人而異,有些開發人員習慣先換行再定義區塊,例如: > > ``` > public class App > { > public static void main(String[] args) throws Exception > { > System.out.println("Hello, World!"); > } > } > ``` > 這麼作的好處是可以很快的找到兩兩成對的大話號,區塊對應清楚。找一個您喜歡的風格撰寫,以清晰易讀為原則就可以了。但如果是團隊開發,則需要遵守團隊開發風格,以免因為多種風格造成程式碼閱讀上的複雜度。 5. 撰寫陳述(Statement) `main()` 方法中唯一的一行陳述: ``` System.out.println("Hello, World!"); ``` 陳述是程式語言中的一行指令,簡單的話就是程式語言的「一句話」。注意每一句陳述的結束要用分號 ' ; ' ,在上面的陳述中,您使用了 java.lang 套件(package)下的 System 類別的公開(public)成員 out 物件,out 是一個 PrintStream 物件,您使用了 PrintStream 所提供的 println() 方法,將當中指定的字串(String) "嗨!我的第一個Java程式!" 輸出至文字模式上。 > 注意: > > 在Java 中字串要使用 "" 包括,println() 表示輸出字串後自動換行,如果使用 print() 的話,則輸出字串後程式並不會自動斷行。 > **補充** > 縮排方式建議按四次空白鍵,少用 Tab 鍵,因為各個文字編輯器或 IDE 對於 Tab字元的顯示方式都不太一樣,有些文字編輯器或 IDE 預設使用 Tab 字元來自動縮排的話,建議將之改為預設四個空白字元進行縮排,因為空白字元顯示方式是一致的。 #### 編譯與執行 ##### 使用VSCode開發環境 VSCode開發環境只需要透過快速鍵`CTRL`+`F5`就可以同時完成編譯與執行,執行結果會在下方Terminal視窗中顯示。 ##### 使用命令列(Terminal) 在終端視窗下使用`javac`ˇ指令來執行編譯,指令如下: ``` javac App.java ``` 編譯如果成功,預設會在同一個目錄下會產生一個想同檔名,但副檔名為「.class」的位元碼(bytecodes)檔案,位元碼檔案在執行時會由各執行環境轉換為該平台可執行的機器碼,指令為`java`如下: ``` java App ``` > 注意: > > java指令後面的執行檔名並不需要加上 「.class」 副檔名,只要提供「類別名稱」即可,執行結果如下: ``` Hello, World! ```