首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

《Thinking in Java》閱讀筆記(第1-3章):對象導論、一切都是對象、操作符核心心得

     編輯:Java 綜合教學

《Thinking in Java》閱讀筆記(第1-3章):對象導論、一切都是對象、操作符核心心得

《Thinking in Java》被譽為 Java 紅寶書,作者 Bruce Eckel 以大量篇幅闡述概念而非堆砌代碼。本文整理前三章核心心得,作為深度學習基石。

第1章:對象導論

1.1 抽象的本質

  • C 語言抽象基於計算機結構;Java 抽象基於問題領域建模
  • 程序通過添加新類型適應問題,而非受限於機器數據類型

1.2 純粹 OOP 五大特性

  1. 萬物皆對象:封裝狀態(數據)與行為(操作)
  2. 程序是對象集合,通過發送消息(調用方法)協作
  3. 每個對象有自己的存儲(由其他對象組成):組合/繼承復用
  4. 每個對象有類型:是某個類的實例
  5. 同類對象接收同樣消息:多態(子類替換父類)

1.3 代碼復用:組合 vs 繼承

  • 組合:靈活、低耦合,用對象提供服務
  • 繼承:用對象提供接口,IS-A 關係
  • 單根繼承:Object 為終極父類,利於向後兼容、垃圾回收、參數傳遞

1.6 多態本質

  • 向上轉型:子類引用賦值給父類變量
  • 動態分發:JVM 運行時根據對象實際類型調用方法(覆蓋)
  • 靜態分發:編譯時根據參數類型決定調用哪個重載方法

1.7 容器與泛型

  • JDK5 前:容器存 Object,取出需向下轉型,不安全
  • 泛型:編譯期類型檢查,消除轉型風險

第2章:一切都是對象

2.1 內存五大區域

區域特點存放內容
寄存器CPU 內部,最快指令、臨時數據
棧RAM,LIFO,生命周期確定基本類型值、對象引用
堆RAM,動態分配,GC 管理所有 Java 對象
常量池代碼內部/ROM字面量、字符串常量
非 RAM磁盤/數據庫序列化對象、持久化數據

2.2 基本類型(固定大小,跨平台一致)

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(任意精度小數)
  • 自動拆裝箱(JDK5+)

2.3 作用域與垃圾回收

  • 花括號定義作用域,局部變量隨作用域結束銷毀
  • 對象在堆上,GC 管理,非確定性銷毀

2.4 static 關鍵字

  • 屬於類而非實例,無需 new 即可訪問
  • 修飾內部類:無外部類引用,行為同頂級類

第3章:操作符

3.1 優先級與賦值

  • 不確定時加括號,提高可讀性
  • 基本類型賦值複製值;對象賦值複製引用(別名)

3.2 關系/邏輯運算符

  • ==:基本類型比值,對象比引用;對象內容比較用 equals()
  • 短路邏輯:&&、||,首個表達式決定結果則不計算後續

3.3 位運算與移位

運算符含義示例
&按位與同為1得1
|按位或有1得1
^按位異或不同得1
~按位非取反
<<左移低位補0,×2ⁿ
>>右移(算術)符號位擴展,÷2ⁿ
>>>無符號右移高位補0

3.4 移位隱藏陷阱:& 0xFF

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 思維基石:面向對象建模、內存模型、基本類型與操作符語義。反覆研讀、動手驗證,方能內化為直覺。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved