1什麼是 Java?
Java 是一種程式語言,1995 年由 Sun Microsystems 推出,現在由 Oracle 與開源社群(OpenJDK)共同維護。 它被廣泛用在企業後端系統、Android App(早期主要語言)、大型網站、金融系統等地方。
🌍 一次撰寫,到處執行
Java 程式會先被編譯成 bytecode(位元組碼),再由 JVM(Java 虛擬機器)執行。只要那台電腦有 JVM,不管是 Windows、macOS 或 Linux 都能跑。
🧱 物件導向
Java 用「類別(class)」與「物件(object)」來組織程式,讓大型專案更容易分工與維護。
🛡️ 型別嚴謹
每個變數都要宣告型別(例如整數、文字),很多錯誤在編譯階段就會被抓出來,對新手其實是好事。
2JDK 和 JRE 有什麼不同?
剛開始最常被這幾個縮寫搞混,用一句話記:要寫程式,就裝 JDK。
| 名稱 | 全名 | 用途 |
|---|---|---|
| JVM | Java Virtual Machine | 真正「執行」bytecode 的虛擬機器。 |
| JRE | Java Runtime Environment | JVM + 執行時需要的函式庫。只能「跑」Java 程式。 |
| JDK | Java Development Kit | JRE 的功能 + 開發工具(例如編譯器 javac)。能「寫」也能「跑」。 |
註:從 Java 11 開始,官方大多不再單獨提供 JRE 安裝包,直接安裝 JDK 即可。
去哪裡下載 JDK?
請到下列官方網站下載(建議選擇 LTS 長期支援版本):
- Eclipse Adoptium(Temurin,免費開源)— https://adoptium.net/
- Oracle Java 下載頁 — https://www.oracle.com/java/technologies/downloads/
安裝完成後,打開「終端機」(Windows 為「命令提示字元」或 PowerShell),輸入:
$ java -version
$ javac -version
如果兩個指令都會顯示版本號,就代表安裝成功了!
3第一個程式:Hello World
建立一個檔案,檔名必須叫做 HelloWorld.java(大小寫要完全一樣),內容如下:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
逐行解釋
public class HelloWorld:定義一個叫HelloWorld的類別。公開類別的名稱要和檔名相同。public static void main(String[] args):程式的入口。執行時,JVM 會從這裡開始跑。先把它當成固定寫法背起來就好。System.out.println(...):在螢幕上印出一行文字。- 每個敘述結尾要加
;(分號),程式區塊用{ }包起來。
編譯與執行
- 打開終端機,用
cd切換到檔案所在的資料夾。 -
編譯:把
.java原始碼變成.classbytecode
成功的話不會有任何訊息,但資料夾裡會多一個$ javac HelloWorld.javaHelloWorld.class。 -
執行:注意這裡不要加
.class$ java HelloWorld Hello, World!
java HelloWorld.java 執行(背後會自動編譯)。
不過先學會 javac + java 兩步驟,比較能理解 Java 的運作方式。
4互動示範:假裝的終端機
這是一個用 JavaScript 模擬的「假」終端機,不會真的執行 Java,只是讓你熟悉流程。
按「下一步」照著做,或自己在下方輸入指令試試看(輸入 help 查看可用指令)。
5變數與資料型別
變數就像一個貼了標籤的盒子,用來存放資料。在 Java 裡,宣告變數時要先寫出它的型別。
public class Variables {
public static void main(String[] args) {
int age = 18; // 整數
double height = 172.5; // 小數
boolean isStudent = true; // 真或假
char grade = 'A'; // 單一字元(單引號)
String name = "小明"; // 文字(雙引號)
System.out.println(name + " 今年 " + age + " 歲");
age = age + 1; // 變數的值可以改變
System.out.println("明年 " + age + " 歲");
}
}
| 型別 | 說明 | 範例 |
|---|---|---|
int | 整數 | 42、-7 |
double | 小數(浮點數) | 3.14 |
boolean | 布林值:真 / 假 | true、false |
char | 單一字元 | 'A' |
String | 字串(一串文字)。注意 S 大寫,它其實是一個類別 | "Hello" |
// 後面是註解,給人看的說明文字,電腦會忽略它。
6條件判斷:if / else
程式需要「做決定」時,就用 if。括號裡放一個會得到 true 或 false 的條件。
int score = 75;
if (score >= 90) {
System.out.println("優秀!");
} else if (score >= 60) {
System.out.println("及格");
} else {
System.out.println("再加油");
}
常用比較與邏輯運算子
| 運算子 | 意思 |
|---|---|
== | 等於(注意是兩個等號;一個 = 是「指定值」) |
!= | 不等於 |
> < >= <= | 大於、小於、大於等於、小於等於 |
&& | 而且(兩個條件都要成立) |
|| | 或者(其中一個成立就好) |
! | 反過來(not) |
String 內容是否相同,請用 a.equals(b),不要用 a == b。
7迴圈:重複做某件事
for 迴圈:知道要做幾次
for (int i = 1; i <= 5; i++) {
System.out.println("第 " + i + " 次");
}
括號內三個部分:起始值(int i = 1);繼續的條件(i <= 5);每次結束後做什麼(i++ 表示 i 加 1)。
while 迴圈:條件成立就一直做
int count = 3;
while (count > 0) {
System.out.println("倒數 " + count);
count--; // count 減 1,忘記寫會變成無窮迴圈!
}
System.out.println("發射!🚀");
8陣列:一次存很多個值
陣列(array)是一排同型別的盒子,每個盒子有編號(索引),而且從 0 開始數。
int[] scores = {80, 95, 72, 60};
System.out.println(scores[0]); // 第一個:80
System.out.println(scores.length); // 長度:4
int total = 0;
for (int i = 0; i < scores.length; i++) {
total += scores[i];
}
System.out.println("總分:" + total);
// 「for-each」寫法:逐一取出每個元素
for (int s : scores) {
System.out.print(s + " ");
}
3。存取 scores[4] 會出現
ArrayIndexOutOfBoundsException 錯誤。
9簡單的類別與方法
方法(method)是把一段程式包起來、取個名字,之後可以重複呼叫。 類別(class)則像是「設計圖」,可以用它建立出很多個物件(object)。
先從方法開始
public class Calculator {
// 接收兩個 int,回傳它們的和
static int add(int a, int b) {
return a + b;
}
public static void main(String[] args) {
int result = add(3, 4);
System.out.println("3 + 4 = " + result);
}
}
再來是類別與物件
class Dog {
String name; // 欄位(屬性)
int age;
// 建構子:用 new 建立物件時會執行
Dog(String name, int age) {
this.name = name;
this.age = age;
}
// 方法(行為)
void bark() {
System.out.println(name + ":汪汪!");
}
}
public class Main {
public static void main(String[] args) {
Dog d1 = new Dog("小黑", 3);
Dog d2 = new Dog("阿白", 5);
d1.bark();
d2.bark();
System.out.println(d2.name + " " + d2.age + " 歲");
}
}
編譯執行方式:javac Main.java 會同時產生 Main.class 和 Dog.class,
接著用 java Main 執行(因為 main 方法在 Main 類別裡)。
.java 檔裡只能有一個 public 類別,且名稱要和檔名一樣。
所以上面的 Dog 沒有加 public。
10常見錯誤與下一步
| 看到的錯誤 | 可能原因 |
|---|---|
'javac' 不是內部或外部命令 / command not found | 沒有安裝 JDK,或沒有設定好 PATH 環境變數。 |
class X is public, should be declared in a file named X.java | 類別名稱和檔名不一致(包含大小寫)。 |
';' expected | 某一行結尾忘了加分號。 |
cannot find symbol | 變數或方法名稱打錯,或還沒宣告就使用。 |
Could not find or load main class | 執行時多打了 .class,或不在正確的資料夾裡。 |
接下來可以學什麼?
- 使用
Scanner讀取使用者輸入 ArrayList、HashMap等集合(Collections)- 物件導向的繼承(inheritance)、介面(interface)
- 例外處理:
try/catch - 試試整合開發環境(IDE),例如 IntelliJ IDEA、VS Code 或 Eclipse
學程式最好的方法就是動手打:把這頁的範例親手打一遍、改改數字、故意寫錯看看錯誤訊息。祝你學習愉快!☕