初學者建議 JDK + 文字編輯器(如 EditPlus、UltraEdit),強迫理解 path、classpath、package 及 javac/java 指令。熟練後可轉用 Eclipse(免費、功能強大),不推薦 JCreator(功能較弱)。
需極致效能、平台綁定、無跨平台需求 → C++;需跨平台、分散式、開發效率優先 → Java。
javac Hello.java // 產生 Hello.class
java Hello // 執行(注意:不加 .class)
JAVA_HOME = JDK 安裝目錄Path 追加 %JAVA_HOME%\binCLASSPATH 必須包含 .(當前目錄),否則出現 NoClassDefFoundError| 錯誤訊息 | 原因 | 解決 |
|---|---|---|
| 'javac' 不是內部命令 | Path 未設定或錯誤 | 檢查 JAVA_HOME 與 Path |
| NoClassDefFoundError | Classpath 找不到類別 | 加入 . 至 CLASSPATH;確認 package 目錄結構 |
| NoSuchMethodError: main | main 方法簽名錯誤 | 必須為 public static void main(String[] args) |
java.lang.String vs mypackage.Stringpackage mypackage;javac mypackage/MyClass.java、java mypackage.MyClassimport pkg.Class 或 import pkg.* 簡化類別名稱使用public static void main(String[] args) {
// java MyClass arg1 arg2 → args[0]="arg1", args[1]="arg2"
}
BufferedReader in = new BufferedReader(
new InputStreamReader(System.in));
String s = in.readLine();
int n = Integer.parseInt(s);
PrintWriter out = new PrintWriter(System.out);
out.println("Hello");
out.flush();
注意:System.in/out 為單位元組流,處理中文需用 Reader/Writer 系列。
// 讀取
BufferedReader fin = new BufferedReader(new FileReader("file.txt"));
// 寫入
PrintWriter fout = new PrintWriter(new FileWriter("file.txt"));
// 隨機存取
RandomAccessFile raf = new RandomAccessFile("file.txt", "rw");
// 判斷結尾
int ch = reader.read(); // 回傳 -1 表示 EOF
Java 無 #define 巨集(不保證型別安全)。定義常數用 static final:
public static final int MAX_SIZE = 100;
final int x = 9; 不可重新指派String、Math)const 為保留字,不可使用。
outer:
while (true) {
inner:
for (int i = 0; i < 10; i++) {
if (condition) break outer; // 直接跳出外層迴圈
}
}
表示方法已過時,保留為相容性,未來可能移除。查閱 API 文檔尋找替代方案。