前言:從零構建 Java 知識體系
Java 以「一次編寫,到處運行」跨平台特性、豐富生態系統、強類型靜態語言優勢,長期佔據企業級開發、Android、大數據、雲原生主流地位。本文面向初學者,系統梳理 JDK 選擇、環境變量配置、基礎語法規範、八大基本類型與包裝類、數組、面向對象三大特性、接口與抽象類、核心類庫包結構,建立完整入門知識骨架。
一、Java 平台版本與 JDK 選擇
| 版本 | 全稱 | 核心定位 | 包含關係 |
| Java SE | Standard Edition | 核心類庫:語言基礎、集合、IO、網絡、數據庫、並發、JVM | 基礎核心 |
| Java EE | Enterprise Edition | 企業級:Servlet、JSP、EJB、JPA、JTA、JMS、WebService、CDI | 含 SE + 企業擴展 |
| Java ME | Micro Edition | 嵌入式/移動:CLDC/MIDP、專用 API(智能卡、手機、PDA) | SE 子集 + 專有擴展 |
- 2005 年 JavaOne 更名:J2SE→Java SE、J2EE→Java EE、J2ME→Java ME。
- **初學路徑**:Java SE 核心語法 → Java EE Web/企業級 → Spring 生態 → 分布式/微服務/雲原生。
- JDK = JRE + 開發工具;JRE = JVM + 核心類庫。僅運行程序裝 JRE,開發必裝 JDK。
二、開發環境搭建
1. JDK 下載安裝
- 官網 / OpenJDK / Adoptium / 阿里雲鏡像下載
.msi/.tar.gz。
- 安裝路徑建議無中文、無空格:
D:\Java\jdk-17。
2. 環境變量配置
# 系統變量
JAVA_HOME = D:\Java\jdk-17
CLASSPATH = .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
Path += %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
. 代表當前目錄,保證運行當前目錄下的類。
- Windows 10+ 可僅配置
JAVA_HOME 和 Path,CLASSPATH 可省略(現代構建工具管理依賴)。
3. 驗證安裝
cmd → java -version
java version "17.0.x" ...
cmd → javac -version
javac 17.0.x
4. IDE 選擇
- IntelliJ IDEA:社區版免費,智能提示、重構、調試、Maven/Gradle/Git 整合最強,主流首選。
- Eclipse:免費開源,插件豐富,舊項目維護常見。
- VS Code + Extension Pack for Java:輕量、啟動快,適合輕量級開發/學習。
三、基礎語法規範
1. 命名約定
| 標識符類型 | 規範 | 示例 |
| 類/接口/枚舉/註解 | PascalCase(大駝峰) | UserService、HttpClient |
| 方法/變量/參數 | camelCase(小駝峰) | getUserById、userName |
| 常量 | UPPER_SNAKE_CASE | MAX_CONNECTIONS、DEFAULT_TIMEOUT |
| 包名 | 全小寫、反域名 | com.company.project.module |
2. 源文件規則
- 一個
.java 文件**最多一個 public 類**,public 類名 = 文件名。
- 包語句
package ... 必須在首行(非註釋)。
- 導入語句
import ... 在 package 後、類定義前。
- 入口方法:
public static void main(String[] args)。
3. 關鍵字與保留字
- 50+ 關鍵字(
class、interface、extends、implements、static、final、try 等)。
goto、const 為保留字,**不可作標識符**。
四、數據類型系統
1. 八大基本類型
| 類別 | 類型 | 位數 | 默認值 | 取值範圍/說明 |
| 整數 | byte | 8 | 0 | -128 ~ 127 |
| short | 16 | 0 | -32,768 ~ 32,767 |
| int | 32 | 0 | -2³¹ ~ 2³¹-1 (約 ±21 億) |
| long | 64 | 0L | -2⁶³ ~ 2⁶³-1,字面量加 L |
| 浮點 | float | 32 | 0.0f | 單精度,字面量加 F,約 7 位有效數字 |
| double | 64 | 0.0 | 雙精度,默認,約 15-16 位有效數字 |
| 字符 | char | 16 | '\u0000' | UTF-16 代碼單元,無符號 0~65535 |
| 布爾 | boolean | 1 (JVM 實際 4/8 字節) | false | true/false,無具體大小規定 |
2. 包裝類與自動裝箱/拆箱
| 基本類型 | 包裝類 | 緩存範圍 |
| byte | Byte | -128 ~ 127 |
| short | Short | -128 ~ 127 |
| int | Integer | -128 ~ 127 |
| long | Long | -128 ~ 127 |
| float | Float | 無 |
| double | Double | 無 |
| char | Character | 0 ~ 127 |
| boolean | Boolean | TRUE/FALSE 兩個單例 |
- 所有包裝類繼承
Number(除 Character/Boolean),提供 intValue()、doubleValue() 等轉換。
valueOf() 優先返回緩存對象,**緩存範圍內 == 比較為 true**,超出範圍 new 新對象 == 為 false,**務必用 equals() 比較值**。
- 自動拆箱可能拋
NullPointerException(包裝類為 null 參與運算)。
3. 常量定義
final int MAX_SIZE = 100; // 編譯期常量
static final String APP_NAME = "MyApp"; // 類常量
// final 修飾引用:引用不可變,對象內容可變
五、數組
- 聲明:
int[] arr; 或 int arr[];(推薦前者)。
- 創建:
new int[5](默認 0)、new int[]{1,2,3}、{1,2,3}(聲明時)。
- 長度:
arr.length 屬性(非方法)。
- 二維/鋸齒:
new int[3][] → 每行 new int[n]。
- 工具類:
Arrays.sort/toString/binarySearch/copyOf/stream。
六、面向對象三大特性
1. 封裝
- 私有字段
private + 公共 getter/setter。
- 構造器初始化、參數校驗、不可變對象模式(final 字段、無 setter、防禦性拷貝)。
2. 繼承
extends 單繼承,super 調用父構造/方法。
- 方法重寫:簽名相同、返回類型協變、拋出異常子集、訪問權限不小於父類。
final 類/方法禁止繼承/重寫。
- Object 根類:
toString/equals/hashCode/clone/finalize/getClass/wait/notify。
3. 多態
- 父類引用指向子類對象:
Animal a = new Cat();
- 編譯看左邊(父類有無方法),運行看右邊(子類實際實現)。
- 向上造型自動,向下造型需強轉(配合
instanceof 守衛)。
- 動態綁定:JVM
invokevirtual 查虛表分發。
七、接口與抽象類
| 特性 | 抽象類 | 接口 |
| 關鍵字 | abstract class | interface |
| 構造器 | 可有(供子類調用) | 無(Java 8 前) |
| 字段 | 任意 | 隱式 public static final |
| 方法 | 抽象 + 具體 | Java 8 前全抽象;8+ default/static/private |
| 繼承/實現 | 單繼承 | 多實現 |
| 訪問權限 | 任意 | 方法默認 public |
設計原則
- 接口定規範:能力契約(
Serializable、Comparable、Runnable)。
- 抽象類共代碼:模板方法模式、公共字段/邏輯復用。
- 接口隔離:多個小接口優於單一大接口。
八、核心包結構速覽
| 包 | 核心內容 |
| java.lang | 基礎類:Object、String、Math、System、Thread、Exception、包裝類(無需 import) |
| java.util | 集合框架、日期時間、工具類、正則、隨機、Base64 |
| java.io | 流式 IO:InputStream/OutputStream、Reader/Writer、File、序列化 |
| java.nio | 新 IO:Buffer、Channel、Selector、Path、Files、零拷貝、內存映射 |
| java.net | 網絡:URL、Socket、ServerSocket、HttpURLConnection、URI |
| java.sql | JDBC:Connection、Statement、PreparedStatement、ResultSet、DataSource |
| java.time | Java 8+ 日期時間:LocalDateTime、ZonedDateTime、Duration、Period、DateTimeFormatter |
| java.util.concurrent | 並發包:Executor、Future、Lock、AQS、原子類、並發集合、線程池 |
| javax.servlet | Servlet API:Servlet、Filter、Listener、HttpServletRequest/Response |
九、學習路線圖建議
- 語法基礎:變量、流程控制、數組、方法、面向對象、異常、常用 API。
- 核心進階:集合源碼、泛型、註解、反射、IO/NIO、多線程並發、JVM 內存模型、類加載、GC 算法。
- 數據庫:MySQL 基礎、SQL 優化、事務隔離、JDBC、連接池、MyBatis/JPA。
- Web 基礎:HTTP、Servlet、JSP、Cookie/Session、Filter/Listener、Tomcat 原理。
- 框架生態:Spring IOC/AOP、Spring MVC、Spring Boot、Spring Cloud、MyBatis-Plus、Redis、MQ、ES。
- 分布式/微服務:CAP/BASE、註冊發現、配置中心、網關、鏈路追蹤、分布式事務、熔斷限流、K8s/Docker。
- 性能調優:JVM 調優、SQL 調優、緩存策略、併發優化、壓測分析、Arthras/JProfiler。
總結
Java 入門看似知識點碎雜,實則脈絡清晰:語法→類庫→框架→架構→生態。建立「基本類型 vs 包裝類、值傳遞本質、集合底層結構、多態動態分發、接口面向契約、異常分層處理、線程安全核心」等核心心智模型,配合大量敲代碼、讀源碼、寫博客、做項目,即可從語法掌握進化為工程思維,踏上 Java 開發者成長之路。
- 上一篇文章: Java 集合框架精講:LinkedList 實現原理、源碼分析與遍歷性能實測
- 下一篇文章: Java 入門實戰:一維/二維數組聲明、初始化、遍歷、Arrays工具類與練習題詳解
Copyright ©
程式碼之家 All Rights Reserved