Java 語言基石知識體系,涵蓋詞法結構、類型系統、運算邏輯與控制流。本文按認知遞進順序重構,適合初學建立完整知識圖譜,也可作為資深開發者的快速檢索手冊。
關鍵字全部小寫,被賦予特殊語義,不可作標識符。按功能分類:
| 分類 | 關鍵字 |
|---|---|
| 數據類型 | class, interface, byte, short, int, long, float, double, char, boolean, void |
| 字面值 | true, false, null |
| 流程控制 | if, else, switch, case, default, while, do, for, break, continue, return |
| 訪問修飾 | private, protected, public |
| 類/方法/變量修飾 | abstract, final, static, synchronized |
| 繼承關係 | extends, implements |
| 對象操作 | new, this, super, instanceof |
| 異常處理 | try, catch, finally, throw, throws |
| 包機制 | package, import |
| 其他修飾 | native, strictfp, transient, volatile, assert |
特殊提醒:goto、const 為保留字,現無作用;var (Java 10+) 為保留類型名,非關鍵字。
_、$| 類型 | 命名風格 | 範例 | ||
|---|---|---|---|---|
| 包名 | 全小寫,多級用點分隔 | com.company.project.module | ||
| 類/接口 | UpperCamelCase | UserService, Serializable | ||
| 方法/變量 | lowerCamelCase | getUserById, maxCount | ||
| 常量 | 全大寫,下劃線分隔 | MAX_BUFFER_SIZE |
| 類型 | 語法 | 特點 | 適用場景 |
|---|---|---|---|
| 單行 | // 註釋 | JVM 忽略 | 行內說明、臨時屏蔽 |
| 多行 | /* 註釋 */ | JVM 忽略,不可嵌套 | 代碼塊說明、大段屏蔽 |
| 文檔 | /** 註釋 */ | javadoc 解析生成 HTML | API 公開接口、類、字段 |
最佳實踐:先寫文檔註釋梳理設計,再填充代碼;公開 API 必須覆蓋 @param、@return、@throws。
123、八進制 0173、十六進制 0x7B、二進制 0b1111011 (Java 7+)3.14、科學計數法 1.5E2true、false'A'、轉義 '\n'、Unicode '\u0041'"Hello"null數據類型 變量名 = 初始值; // 例 int age = 18; double price = 19.9; boolean isVip = false;
{} 內有效Java 8 基本類型(boolean 占 1 位邏輯,實際存儲實現相關):
| 類型 | 位數 | 字節 | 範圍 | 默認值 |
|---|---|---|---|---|
| byte | 8 | 1 | -128 ~ 127 | 0 |
| short | 16 | 2 | -32,768 ~ 32,767 | 0 |
| int | 32 | 4 | -2^31 ~ 2^31-1 | 0 |
| long | 64 | 8 | -2^63 ~ 2^63-1 | 0L |
| float | 32 | 4 | ±1.4E-45 ~ ±3.4E38 | 0.0f |
| double | 64 | 8 | ±4.9E-324 ~ ±1.7E308 | 0.0 |
| char | 16 | 2 | 0 ~ 65,535 (Unicode) | '\u0000' |
| boolean | ~1 | ~1 | true/false | false |
默認類型:整數字面值默認 int,浮點默認 double(需 1.5f、10L 顯式指定)。
byte/short/char → int → long → float → double(targetType) value,可能溢出/精度損失short s=3; s+=2; 隱含強轉,s=s+2 編譯報錯| 運算符 | 含義 | 注意點 |
|---|---|---|
| + - * / | 加減乘除 | 整數除法僅保留整數部分 |
| % | 取模 | 負數被模數:結果符號跟隨被模數 |
| + | 字符串連接 | 任意類型 + String → String |
=, +=, -=, *=, /=, %= —— 複合賦值隱含強轉,鏈式賦值 a=b=c=3 從右向左結合。
==, !=, >, <, >=, <= —— 結果均為 boolean;嚴禁 if (x = 1)。
| 運算符 | 名稱 | 短路特性 |
|---|---|---|
| && | 邏輯與 | 左假右不算 |
| || | 邏輯或 | 左真右不算 |
| ! | 邏輯非 | 取反 |
| & | 按位與/邏輯與 | 不短路,雙方必算 |
| | | 按位或/邏輯或 | 不短路 |
| ^ | 異或 | 相同為 false,不同為 true |
| 運算符 | 操作 | 等價數學 | 範例 |
|---|---|---|---|
| << | 左移 | × 2^n | 3 << 2 = 12 |
| >> | 右移(帶符號) | ÷ 2^n | 3 >> 1 = 1 |
| >>> | 無符號右移 | 高位補 0 | -8 >>> 1 = 2147483644 |
| & | 按位與 | 清零/取位 | 6 & 3 = 2 |
| | | 按位或 | 置位 | 6 | 3 = 7 |
| ^ | 按位異或 | 翻轉/交換 | 6 ^ 3 = 5 |
| ~ | 按位取反 | ~x = -x-1 | ~6 = -7 |
技巧:a ^= b; b ^= a; a ^= b; 無第三變量交換兩整數。
條件 ? 表達式1 : 表達式2 // 例:取較大值 int max = (a > b) ? a : b;
與 if-else 差異:三元運算符為表達式,有返回值,可嵌套在賦值/參數/返回語句中。
switch (expr) { // expr: byte/short/int/char/String(Java 7+)/enum
case val1: stmt; break;
case val2: stmt; break;
default: stmt; break;
}
break 缺失導致「貫穿」case/default 順序不影響匹配| 類型 | 語法 | 特點 |
|---|---|---|
| while | while(cond){...} | 先判斷後執行,可零次 |
| do-while | do{...}while(cond); | 先執行後判斷,至少一次 |
| for | for(init; cond; step){...} | 計數器作用域限於循環,推薦已知次數 |