| 特性 | String | char |
|---|---|---|
| 類型 | 引用類型 (Object) | 基本類型 (16-bit Unicode) |
| 存儲位置 | 字符串字面量駐留於**常量池** (堆中) | 棧幀局部變量表 |
| 比較方式 | equals() 比較內容,== 比較引用 | == 直接比較數值 |
String a = "A";
char ch = 'A';
// 錯誤:類型不匹配,編譯不通過
// if (a == ch) { ... }
// 正確比較方式
if (a.charAt(0) == ch) { ... } // 1. 取字符比較
if (a.equals(String.valueOf(ch))) { ... } // 2. 轉字符串比較
if (a.equals(Character.toString(ch))) { ... } // 3. 同上
String a = "A"; String b = "A"; → a == b 為 true (同一常量池對象)。String c = new String("A"); → a == c 為 false (堆上新對象)。char 無常量池概念,'A' 編譯期直接嵌入字節碼作為數值 65。**字符串與字符屬於不同類型體系,無法直接比較。** 必須統一為字符或字符串後再比較。