每個人學習節奏不同,但知識依賴關係是客觀的。本文基於純自學經驗,提煉出六階段進階路徑,強調「動手破壞代碼」與「讀源碼」兩大核心方法論。
HelloWorld。ClassLoader 雙親委派、Bootstrap/Extension/Application 三層、Class.forName()、線程上下文類加載器。import static、無包類的限制。public/protected/private/default 可見性矩陣、static 初始化順序、final 三種用法、this/super、異常體系 (Checked/Unchecked)、try-with-resources。JDK rt.jar 約 4000+ 類,但 80% 工作只用 4 個包:
| 包 | 核心類 | 必會場景 |
|---|---|---|
| java.lang | String, StringBuilder, Math, System, Thread, Class, Enum, AutoCloseable | 字符串操作、反射入口、線程基礎、資源管理 |
| java.io | File, InputStream/OutputStream, Reader/Writer, Buffered*, ObjectInput/OutputStream, NIO.2 Path/Files | 文件讀寫、序列化、管道、內存映射 |
| java.util | Collection/List/Set/Map, Stream, Optional, Date/Calendar, UUID, Collections, Arrays | 容器選型、流式處理、空值防禦、工具方法 |
| java.sql | Connection, PreparedStatement, ResultSet, DataSource, SQLException | JDBC 模板、事務控制、連接池整合 |
學習法:先通讀包框架(類/接口/異常結構),知「有哪些工具、解決什麼問題」;編碼時查 Documentation 確認具體方法簽名。不背誦 API,建立索引感知。
java.text:SimpleDateFormat, MessageFormat, DecimalFormat (線程不安全!用 ThreadLocal 或 DateTimeFormatter)java.net:URL, HttpURLConnection, InetAddress, URIjavax.naming:InitialContext, JNDI 查找數據源/EJBsrc.zip 解壓,遇到疑難直接讀 HashMap, ArrayList, ThreadPoolExecutor 源碼,Sun/Oracle 工程師的寫法就是標準答案。java -verbose:class / javac -verbose 觀察類加載/編譯細節。Java 學習無捷徑,但有正途:順應依賴鏈、大量寫代碼、讀優秀源碼、建立個人知譼體系。堅持半年,必有質變。