本文系統梳理 Java 開發中必須掌握的核心知識點,涵蓋基本類型、語法特性、面向對象機制、集合框架基礎、異常處理、內部類、不可變對象設計等 22 個關鍵領域,適合面試複習與日常查漏補缺。
| 類型 | 大小 | 包裝類 |
|---|---|---|
| byte | 1 字節 | Byte |
| short | 2 字節 | Short |
| int | 4 字節 | Integer |
| long | 8 字節 | Long |
| char | 2 字節 (UTF-16) | Character |
| float | 4 字節 | Float |
| double | 8 字節 | Double |
| boolean | 1 字節 (JVM 實現相關) | Boolean |
0b1010 或 0B10101_000_0001.0 / 0.0-1.0 / 0.00.0 / 0.0 或 Math.sqrt(-1)'\uXXXX'String a = "java"; String b = "java"; a == b // truenew String() 創建新對象,需 intern() 手動入池Integer -128 到 127 緩存(Integer.valueOf())Parent obj = new Child();
obj.field; // 訪問 Parent.field,字段無多態,靜態綁定
obj.method(); // 調用 Child.method(),方法動態綁定
obj instanceof Type // 判斷 obj 是否為 Type/子類/實現類實例
int a = 1;
Integer A = new Integer(a); // 或 Integer.valueOf(a)
a = A.intValue(); // 解箱
// Java 5+ 自動裝箱/拆箱
| 類型 | 初始化位置 |
|---|---|
| 靜態 final | 聲明處 / 靜態初始化塊 |
| 實例 final | 聲明處 / 實例初始化塊 / 構造器 |
注意:final 變量必須顯式初始化,系統不會隱式初始化。
JDK 內置不可變類:8 個包裝類、String、BigInteger、BigDecimal 等。
public final class CacheImmutable {
private static final int MAX_SIZE = 10;
private static final CacheImmutable[] cache = new CacheImmutable[MAX_SIZE];
private static int pos = 0;
private final String name;
private CacheImmutable(String name) { this.name = name; }
public static CacheImmutable valueOf(String name) {
// 查找緩存
for (int i = 0; i < MAX_SIZE; i++) {
if (cache[i] != null && cache[i].name.equals(name)) return cache[i];
}
// 創建新實例並入緩存(循環覆蓋)
CacheImmutable instance = new CacheImmutable(name);
if (pos == MAX_SIZE) { cache[0] = instance; pos = 1; }
else { cache[pos++] = instance; }
return instance;
}
// equals/hashCode 基於 name 實現
}
適用場景:高頻重複值(如枚舉替代品),低頻值反而增加 GC 壓力。
static 與 abstract 不能同時修飾方法(無類實例方法)public static final,方法隱含 public abstract(Java 8+ 可有 default/static 方法)方法局部變量 → 外部類實例字段 → 內部類字段 → 編譯錯誤
class Outer {
String prop = "外部類實例變量";
class Inner {
String prop = "內部類實例變量";
void info() {
String prop = "局部變量";
System.out.println(Outer.this.prop); // 訪問外部類
System.out.println(this.prop); // 訪問內部類
System.out.println(prop); // 訪問局部變量
}
}
}
Outer.Inner in = new Outer().new Inner();outer.super()Outer.StaticInner in = new Outer.StaticInner();javac -d . Hello.java(當前目錄生成包結構)java 包名.類名int[][] 實為數組的數組public class Singleton {
private static Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) instance = new Singleton(); // 非線程安全
return instance;
}
}
生產建議:使用枚舉單例、雙重檢查鎖、靜態內部類等線程安全寫法。
這 22 個知識點構成了 Java 基礎的「知識骨架」。建議開發者: