一、Java 語言 11 大關鍵特性
- 簡單易學:語法較 C++ 精簡,核心類庫約 40KB,加上標準庫與執行緒支援約 125KB,可在小型裝置執行。
- 分散式:內建 TCP/IP 協議支援,透過 URL 存取遠端物件,Servlet 機制讓 Web 開發高效,主流伺服器皆支援。
- 面向物件:核心在於物件與介面,與 C++ 不同處在於多重繼承處理與原型模型。
- 健壯性:採用安全指標模型,降低記憶體重寫與資料損壞風險。
- 安全性:專為網路/分散式環境設計,可構建防病毒、防攻擊系統,防毒表現優異。
- 架構中立:編譯產生架構中立的位元組碼,可在任何處理器上由 JVM 解釋執行。
- 可移植性:基本資料型態大小與演算法有嚴格規範,跨平台一致性高。
- 多執行緒:語言層面內建多執行緒支援,交由 OS 或執行緒庫管理,是伺服器端開發首選原因之一。
- Applet 與 Servlet:Applet 可在瀏覽器執行支援動態網頁;Servlet 提供伺服器端處理能力。
- 動態性:執行期可動態載入類別,支援反射與動態代理。
- 高效能:JIT 即時編譯與優化,效能接近原生碼。
二、30 個核心基礎概念
- 物件導向核心:程式由屬性與行為封裝的物件組成,物件間透過方法呼叫溝通,封裝提高復用性。
- 類別是藍圖:類別為模板,透過
new 建立實例(Instance)。
- 封裝:將資料與行為結合,隱藏實作細節,物件資料稱為實例欄位。
- 繼承:透過
extends 擴充既有類別,所有類別隱含繼承自 Object 根類別。
- 物件三大特性:Behavior(行為)、State(狀態)、Identity(唯一辨識),三者相互影響。
- 類別關係:Use-a(依賴)、Has-a(聚合)、Is-a(繼承,子類別擁有父類別方法並可擴充)。
- 建構子:特殊方法,同名類別、無回傳值、可多載、配合
new 初始化物件。
- 多載:同名方法參數列表不同(個數、型別、順序),編譯器依參數綁定。
- 套件:組織類別的命名空間,標準庫分為
java.lang、java.util、java.net 等層級結構。
- 繼承機制:子類別復用父類別方法與欄位,並可新增擴充功能。
- 擴充類別語法:
class Child extends Parent 體現 Is-a 關係。
- 多型:物件變數可指向子類別實例,Java 不支援多重繼承(介面除外)。
- 動態綁定:執行期依實際物件型別決定呼叫方法版本,支援擴充無需重編譯。
- final 類別:禁止被繼承,確保實作不被變更。
- 動態與靜態呼叫效能:動態綁定較靜態綁定耗時,但提供彈性。
- 抽象類別:含抽象方法的類別必須宣告
abstract,規範子類別實作契約。
- Object 根類別:所有類別隱含繼承,提供
equals()、toString() 等通用方法。
- equals 與 toString:
equals 比較邏輯相等;toString 回傳物件字串表示,幾乎必須覆寫。
- 泛型程式設計:任何類別型態皆可指派給
Object 變數。
- ArrayList 動態陣列:
java.util 套件提供,自動調整容量。
- Class 類別與反射:
getClass() 取得執行期類別中繼資料,java.lang.reflect 套件支援運行時分析類別結構、操作欄位/方法/建構子,主要供工具開發使用。
- 介面:定義「做什麼」不指定「怎麼做」,類別可實作多個介面,使用
implements 關鍵字。
- 介面非類別:無法實例化,僅為規範;實作需宣告介面並定義所有方法。
- 單一繼承、多重實作:一個類別僅能繼承一個父類別,但可實作多個介面(如
Cloneable)。
- 回呼模式:透過介面(如
ActionListener)在特定事件觸發時通知物件。
- 物件複製:
clone() 為 protected,需實作 Cloneable 並覆寫為 public。
- 內部類別:定義於另一類別內部,可存取外部類別私有成員、隱藏實作、便利定義回呼與事件驅動程式。
- 動態代理:
Proxy 類別實作指定介面與 Object 方法,用於 AOP 等進階場景。
- 基本資料型態:Java 強型別語言,8 種基本型別:4 整數(byte/short/int/long)、2 浮點數(float/double)、1 字元(char,Unicode)、1 布林(boolean)。
掌握上述特性與概念,能幫助初學者建立扎實的 Java 知識骨架,後續進階學習集合、IO、多執行緒、JDBC、框架等主題時將更得心應手。