《Thinking in Java》被譽為 Java 紅寶書,作者 Bruce Eckel 以大量篇幅闡述概念而非堆砌代碼。本文整理前三章核心心得,作為深度學習基石。
| 區域 | 特點 | 存放內容 |
|---|---|---|
| 寄存器 | CPU 內部,最快 | 指令、臨時數據 |
| 棧 | RAM,LIFO,生命周期確定 | 基本類型值、對象引用 |
| 堆 | RAM,動態分配,GC 管理 | 所有 Java 對象 |
| 常量池 | 代碼內部/ROM | 字面量、字符串常量 |
| 非 RAM | 磁盤/數據庫 | 序列化對象、持久化數據 |
boolean(1位) byte(8) char(16) short(16) int(32) long(64) float(32) double(64)
包裝類: Boolean Byte Character Short Integer Long Float Double
BigInteger(任意精度整數)、BigDecimal(任意精度小數)==:基本類型比值,對象比引用;對象內容比較用 equals()&&、||,首個表達式決定結果則不計算後續| 運算符 | 含義 | 示例 |
|---|---|---|
| & | 按位與 | 同為1得1 |
| | | 按位或 | 有1得1 |
| ^ | 按位異或 | 不同得1 |
| ~ | 按位非 | 取反 |
| << | 左移 | 低位補0,×2ⁿ |
| >> | 右移(算術) | 符號位擴展,÷2ⁿ |
| >>> | 無符號右移 | 高位補0 |
byte 移位自動提升為 int,負數會符號擴展(高位填1)。& 0xFF 保留低8位,清零高24位,修正符號擴展影響:
byte b = -4; // 11111100
int i = b; // 11111111 11111111 11111111 11111100 (符號擴展)
int correct = b & 0xFF; // 00000000 00000000 00000000 11111100 = 252
前三章奠定 Java 思維基石:面向對象建模、內存模型、基本類型與操作符語義。反覆研讀、動手驗證,方能內化為直覺。