本文旨在梳理多年 Java 開發實踐中的核心心得,重點聚焦於 J2SE 階段的基石知識點。無論你是剛入門的新手,還是計劃轉型 Java 開發的準老手,希望這份經驗總結能助你少走彎路,更高效地掌握 Java 技術精髓。後續將另闢篇幅介紹 J2EE 及主流框架相關內容。
對於初學者,了解 JVM 基本概念即可;但對於 3 年以上經驗的資深開發者,不懂 JVM 幾乎是不可接受的。JVM 是 Java 運行的基石,透徹理解它才能真正吃透這門語言。面試中 JVM 更是考察技術深度的必問項。
許多開發者依賴 IDE 一鍵運行,卻不知底層運作機制。掌握命令行編譯運行,能讓你在環境變量、類路徑、依賴衝突等「詭異問題」面前游刃有餘。
javac 編譯源碼為字節碼,java 命令啟動 JVM 運行類。java -cp . com.pkg.Main)。classpath(類搜索路徑)、java.library.path(本地庫路徑)、JRE 安裝目錄結構。掌握 8 大基本類型與對應包裝類,深入理解自動裝箱/拆箱機制、緩存範圍(-128~127)、== 與 equals 的陷阱。
equals 與 hashCode 契約重寫規範,toString、clone、finalize 正確用法。
字符串常量池、intern()、StringBuilder/StringBuffer 高效拼接、正則表達式性能陷阱。
public > protected > default > private 四級權限對類、方法、字段的修飾差異,合理設計 API 邊界。
if/switch/for/while/do-while、增強 for 循環、標籤跳轉、switch 表達式(JDK 12+)新語法。
super 調用、方法覆蓋規則、最終類/方法(final)。instanceof 模式匹配(JDK 16+)、接口回調實現解耦。進階概念:抽象類 vs 接口(JDK 8 默認/靜態方法、JDK 9 私有方法)、靜態/動態代理、組合優於繼承原則、SOLID 設計原則落地。
final、abstract 組合使用的限制(如抽象方法不能是 static)。String/StringBuilder/StringBuffer 源碼級差異。final/finally/finalize 三者完全不同的語義。equals/hashCode 重寫規約與集合鍵值對行為一致性。不懂集合源碼,做不好架構選型。必須掌握:
Collection(List/Set/Queue)與 Map 兩大派系、Iterable 根接口。ArrayList 動態擴容、LinkedList 雙向鏈表、Vector 同步舊類。HashMap 數組+鏈表/紅黑樹、擴容機制、死循環隱患(JDK 7)、ConcurrentHashMap 分段鎖/CAS 進化史。HashSet 依賴 HashMap、TreeSet 依賴 TreeMap 紅黑樹有序性。LinkedHashMap 訪問順序/插入順序、LRU 緩存實現基石。Collections 排序/同步/二分查找、Arrays 處理原始數組。Throwable → Error(不可恢復)/ Exception → RuntimeException(非受檢)/ 受檢異常。RuntimeException,基礎設施層拋受檢異常。InputStream/OutputStream 字節流、Reader/Writer 字符流、裝飾者模式組合(BufferedReader 等)。FileChannel 鎖機制。AsynchronousSocketChannel 回調/Future 模式、Proactor 模型。ExecutorService。synchronized 鎖升級(偏向→輕量→重量)、ReentrantLock AQS 框架、ReadWriteLock、StampedLock 樂觀讀。wait/notify、Condition、CountDownLatch/CyclicBarrier/Phaser、CompletableFuture 異步編排。ThreadPoolExecutor 七大參數、拒絕策略、Future/CompletionStage、ForkJoinPool 分治任務、ConcurrentHashMap、LongAdder、ThreadLocal 內存洩漏防範。TCP/UDP Socket 編程、ServerSocket/Socket 阻塞模型、NIO Selector 非阻塞模型、應用層協議(HTTP、WebSocket)設計、Netty/Mina 框架選型理由。
JDK 8 java.time 包徹底替換 Date/Calendar:LocalDateTime、ZonedDateTime、Instant、Duration/Period、DateTimeFormatter 線程安全、時區數據庫更新機制。
DocumentBuilderFactory XXE 防護。語法糖本質、PECS 原則(extends 生產者、super 消費者)、通配符捕獲、橋接方法、運行時通過反射獲取泛型實際類型(TypeToken 模式)。
定義 @Retention(SOURCE/CLASS/RUNTIME)、@Target、@Documented、@Inherited、@Repeatable;APT 編譯期處理(Lombok、MapStruct 原理)、運行時反射掃描(Spring 掃描組件)。
UnicastRemoteObject 導出遠程對象。native 關鍵字、javah 生成頭文件、C/C++ 實現、System.loadLibrary 加載路徑、JNIEnv 指針操作 Java 對象、關鍵字 critical 區性能優化、崩潰排查(hs_err_pid.log)。上述知識點構建了 Java 後端開發的「內功心法」。建議按模塊深入鑽研,結合源碼閱讀(JDK、Spring、Netty)與實戰項目落地。技術迭代極快,保持持續學習,關注 JDK 新版本特性(如 Virtual Threads、Structured Concurrency、Foreign Function & Memory API),方能在架構演進中立於不敗之地。