本文系統梳理 OOP 核心概念、類與對象建模、方法調用機制、變量作用域、String 特性、內存管理與垃圾回收,適合初學者建立完整知識體系,也供資深開發者快速回顧。
| 維度 | 結構化編程 | 面向對象編程 |
|---|---|---|
| 核心公式 | 程序 = 算法 + 數據結構 | 程序 = 對象 + 對象 + … |
| 優先級 | 算法優先 | 數據(對象)優先 |
| 關鍵點 | 函數分解 | 讓每個對象負責一組相關任務 |
| 項目 | 類 | 對象 |
|---|---|---|
| 定義 | 創建對象的模板/藍圖;同類對象的共同抽象 | 類的實例化結果;真實存在的具體事物 |
| 關鍵特性 | 靜態定義 | 動態實例、狀態(屬性)+ 行為(方法) |
| 代碼操作 | 建模階段 | 運行階段操作對象 |
聯繫:類定義對象 → 對象離不開類 → 類存在目的為實例化對象。
案例:學生類
public class Student {
public String number, name, major;
public int age;
public void attendClass() { /* ... */ }
public void exam() { /* ... */ }
}
Dog dog = new Dog(); // new 關鍵字在堆創建對象,棧存引用
dog.brand = "中華田園犬"; // 成員訪問符 . 賦值屬性
dog.age = 3;
System.out.println(dog.toString()); // 發送消息調用方法
訪問修飾符 返回類型 方法名(參數列表) { 方法體 }
void operatorData(int age) { age++; } // 外部 age 不變
void operatorArray(int[] arr) { arr[2] = 100; } // 外部 arr[2] 變為 100
本質:基本類型存棧,引用類型棧存地址指向堆對象。
String s = "abc"; → 常量池複用,s1 == s2 為 true。String s = new String("abc"); → 堆中新建對象,s1 == s2 為 false,但 equals 為 true。

hashCode 可緩存,作為 Map Key 極快。| 方法 | 說明 |
|---|---|
length() | 字符長度 |
charAt(index) | 指定索引字符 |
concat(str) | 拼接(返回新對象) |
contains(seq) | 是否包含子序列 |
equals(obj) | 內容比較 |
compareTo(str) | 字典序比較 |
indexOf(ch/str) | 首次出現索引 |
split(regex) | 正則分割 |
substring(begin, end) | 截取子串 |
toLowerCase()/toUpperCase() | 大小寫轉換 |
new 在堆分配並初始化。