本文系統整理 Java 基礎進階主題,涵蓋包裝類、抽象類與介面、單例模式、套件管理、繼承與多態、String 核心機制、this/static、常見易混淆概念辨析,助你建立扎實的知識骨架。
基本型別 int 對應的參考型別 Integer 提供豐富工具方法:
Integer.MAX_VALUE / MIN_VALUE:取得 int 範圍邊界。toBinaryString()、toHexString():轉二進位/十六進位字串。Integer i = 10; 與 int n = i; 直接轉換。關鍵差異:int 預設值 0,儲存於堆疊;Integer 預設值 null,物件在堆積區,支援 null 語意。
abstract 方法的類必須宣告為抽象類。new 實例,需由子類實作所有抽象方法後才能實例化。abstract class Chinese {
public abstract void show();
}
class Taiwanese extends Chinese {
public void show() { System.out.println("Taiwanese"); }
}
public static final(常數)與 public abstract(方法)。implements 實作介面,可多實作(implements A, B)。interface C extends A, B)。default、static、private 方法。private,防外部實例化。public static 取得實例方法。| 模式 | 特點 | 程式碼骨架 |
|---|---|---|
| 餓漢式 | 類載入時即建立,線程安全,可能浪費資源 | private static final Instance INSTANCE = new Instance(); |
| 懶漢式 | 首次呼叫才建立,需雙重檢查鎖定保證線程安全 | if (instance == null) { synchronized { if (instance == null) instance = new Instance(); } } |
應用場景:資源控制器、配置管理器、連線池等需全域唯一存取點的場合。
com.company.project),全小寫。package 必須為非註解第一行;import 引入類別。java.lang 自動匯入;常用套件:java.util、java.io、java.sql、javax.swing 等。Super s = new Sub(); 安全但失去子類新增方法。String s1 = "abc"; // 常量池
String s2 = new String("abc"); // 堆區新物件
String s3 = "a" + "b"; // 編譯期優化 -> 常量池 "ab"
String s4 = s1 + "b"; // 執行期 StringBuilder -> 堆區新物件
equals() 比內容,== 比參考;equalsIgnoreCase() 忽略大小寫。indexOf()、substring()、split()、replace()、concat()/+。StringBuilder(非線程安全)或 StringBuffer(線程安全)。this.field = param 區分同名欄位。this.method() 呼叫本類其他方法。other.doSomething(this)。ClassName.method() 直接呼叫;不可直接存取非靜態成員(無 this 參考)。| 比較項 | 關鍵差異 |
|---|---|
| break / continue / return | break 跳出迴圈;continue 結束本輪進入下輪;return 結束方法並回傳值 |
| 類變數 / 實例變數 / 區域變數 | 定義位置、生命週期、初始化規則、存取方式均不同 |
| this / super | this 從子類向上找;super 直接找父類;this() 呼叫本類建構子,super() 呼叫父類建構子 |
| String / StringBuffer / StringBuilder | 不可變 vs 可變;線程安全 vs 非線程安全 |
| equals / == | 基本型別只能 ==;包裝類/String equals 比內容,== 比參考;未覆寫 equals 時同 == |
| Overload / Override | 同類同名不同參數 vs 子類覆寫父類同名同參數;前者編譯期綁定,後者執行期綁定 |
| int / Integer | 基本型別 vs 參考型別;預設 0 vs null;速度 vs 功能豐富 |
| 類 / 抽象類 / 介面 | 實例化能力、方法型別、繼承/實作規則、多重實作支援度不同 |
| final / finally / finalize | 修飾符(不可變/不可繼承/不可覆寫) vs 異常塊(必執行) vs GC 回收前呼叫 |
super() 與 this():皆須置建構子首行。final 與 abstract:最終 vs 抽象,語意衝突。abstract 與 private:抽象方法需被覆寫,private 不可被覆寫。