Java 入門教學:從 0 開始建立並執行你的第一支 Java 程式【Thinking in Java筆記(1-3)】

Java 入門教學:從 0 開始建立並執行你的第一支 Java 程式【Thinking in Java筆記(1-3)】
Photo by orbtal media / Unsplash

剛開始學 Java 的時候,可能會對「編譯」、「類別」、「static」、「import」這些詞感到一臉問號,這篇文章就是為了幫助你——從零開始,寫出並執行你的第一支 Java 程式,順便搞懂幾個 Java 的基礎概念

為什麼要管「名稱」?── 了解 Java 的命名與可見性

在大型專案中,常常會有幾百個類別,每個類別又叫 Helper、Utils、Config… 沒人知道誰是誰的時候,命名衝突就會像午餐時間的微波爐一樣爆炸

解法:包(Package)命名 + 網域命名規則

Java 建議用你自己公司的網站域名來當 package 的前綴,像這樣:

package com.example.utility.fib;

這種寫法不只避免衝突,還讓你的專案結構更清楚,看起來也很專業(儘管你只是一個人寫 side project)

怎麼使用別人的工具?── import 關鍵字

假設你想用 ArrayList,但它住在 Java 的 java.util 套件裡,你就得明確跟 Java 說:「我要用這個。」

import java.util.ArrayList;

懶得一個一個寫?可以這樣偷懶一次打包所有類別:

import java.util.*;

但這種用 * 的方式其實有點醜、也不推薦在大型專案用(編譯速度、閱讀性問題),你可以當作是新手練習的「簡易模式」

static 是什麼?它為什麼不需要物件?

有些東西不應該每個物件各存一份,例如計數器、常數、工具方法。這時候 static 就派上用場了

class StaticTest {
  static int i = 47;
}

StaticTest st1 = new StaticTest();
StaticTest st2 = new StaticTest();

System.out.println(st1.i); // 47
System.out.println(st2.i); // 47

StaticTest.i++;
System.out.println(st1.i); // 48
System.out.println(st2.i); // 48

上面這個例子說明了:所有物件共用同一份 static 資料。就像一群學生共用一個黑板,誰寫什麼其他人都看得到

還有一種常見的用途是「工具方法」,像這樣:

class Incrementable {
  static void increment() {
    StaticTest.i++;
  }
}

Incrementable.increment(); // 不需要 new 就能叫用

實戰:寫出並執行你的第一支 Java 程式

對新手而言,前面的基礎環境設定常常是一個大坑。我們一步一步來,讓你不再被 javac/java/編譯器/環境設定 這種語言搞得頭昏腦脹

什麼是 JDK?

JDK = Java Development Kit,就是 Java 開發工具套件。你沒有它,也就無法編譯和執行 Java 程式。

包含了:

  • javac :Java compiler,負責編譯 .java 文件
  • java :Java runtime launcher,用來執行 .class
  • Java 官方語法、常用程序庫等等

我應該裝 JDK 還是 JRE?

  • JDK (Java Development Kit) 是開發者用的,你需要的是這個
  • JRE 是 Java Runtime Environment,只能執行 Java 程式,不能編譯

官方下載網址:https://www.oracle.com/java/technologies/javase-downloads.html 或是用 OpenJDK:https://jdk.java.net/

你需要安裝與設定 PATH

從下載項目安裝 JDK 後,請做一件事:

→ 把 JDK 的 bin 目錄追加到環境變數 PATH

什麼是 PATH?

PATH 是一個環境變數,讓你可以直接在終端機上打 javac 而不是打全路徑,像:

"C:\\Program Files\\Java\\jdk-21\\bin\\javac"

最簡單方式:

  • Windows: 採用 控制台 → 系統 → 環境設定
  • macOS: 編輯 .bash_profile.zshrc
export PATH="$PATH:/Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home/bin"

編譯 Java 程式

假設你寫了一個簡單程式:

import java.util.*;

public class HelloDate {
  public static void main(String[] args) {
    System.out.println("Hello. it's: ");
    System.out.println(new Date());
  }
}

把他儲存為 Hello.java

編譯

javac Hello.java

你會看到相同名稱的 Hello.class 出現在同一目錄

執行

java Hello
注意:這裡不要加 .class

什麼是 .class 檔?

Java 程式不是直接執行原始碼。你寫的 .java 是一種清楚可讀的原始語言,需要編譯成 JVM (虛擬機) 應用的中間碼,也就是 .class

.class 檔是 bytecode,Java 虛擬機 JVM 會讀這個檔案來執行

成功執行的話你將會看到類似的輸出

Hello. it's:
Wed Apr 30 14:55:02 UTC 2024

結語

如果你成功編譯並執行了這支 Java 程式,那就恭喜你:你已經越過了初學者的第一道大門。從搞懂 JDK 到建立 .java.class 檔案,甚至手動設定 PATH——這些步驟看似繁瑣,實際上是成為 Java 開發者的入場券

未來你會接觸到更多像物件導向、例外處理、集合框架、GUI 與多執行緒的概念,但這一切,都建立在你今天寫下並跑出「Hello. it's: + 時間」這段程式的基礎上

接下來,放心大膽地寫下一支支 Java 程式吧。從小工具開始,從錯誤訊息學習,從每次執行中前進一步。這只是你成為開發者的起點——而你,已經在路上了