Java 作為面向對象語言的代表,「一切皆對象」不僅是口號,更貫穿於類設計、內存模型、垃圾回收等核心機制中。本文系統梳理 Java 基礎知識體系的第一部分,涵蓋對象創建、訪問控制、基本類型與包裝類、變量聲明及垃圾回收機制,為進階學習打牢地基。
public class ATypeName {
// 字段(數據成員/屬性)
private String name;
private int age;
// 構造方法
public ATypeName(String name, int age) {
this.name = name;
this.age = age;
}
// 方法(成員函數/行為)
public void sayHello() {
System.out.println("Hello, " + name);
}
}
類的兩大核心元素:
// 實例化對象:new 關鍵字調用構造方法
ATypeName obj = new ATypeName("張三", 25);
// 調用方法
obj.sayHello();
| 修飾符 | 同類 | 同包 | 子類(異包) | 非子類(異包) |
|---|---|---|---|---|
| public | ✓ | ✓ | ✓ | ✓ |
| protected | ✓ | ✓ | ✓ | ✗ |
| default(無) | ✓ | ✓ | ✗ | ✗ |
| private | ✓ | ✗ | ✗ | ✗ |
最佳實踐:字段優先 private,通過公有 getter/setter 暴露;方法按需暴露,內部輔助方法用 private。
| 類別 | 類型 | 位數 | 默認值 | 包裝類 |
|---|---|---|---|---|
| 整數 | byte | 8 | 0 | Byte |
| short | 16 | 0 | Short | |
| int | 32 | 0 | Integer | |
| long | 64 | 0L | Long | |
| 浮點 | float | 32 | 0.0f | Float |
| double | 64 | 0.0d | Double | |
| 字符 | char | 16 | '\u0000' | Character |
| 布爾 | boolean | 1(邏輯) | false | Boolean |
特殊類型:void 無返回值標識,包裝類 Void;高精度計算用 BigInteger/BigDecimal(不可變對象)。
// 裝箱:基本類型 → 包裝類
Integer num = 100; // 編譯器自動轉為 Integer.valueOf(100)
// 拆箱:包裝類 → 基本類型
int val = num; // 編譯器自動轉為 num.intValue()
// 緩存機制:-128 到 127 的 Integer/Long/Short/Byte/Character 會緩存
Integer a = 100, b = 100; // a == b 為 true(同一緩存對象)
Integer c = 200, d = 200; // c == d 為 false(新建對象),需用 equals 比較
equals()static 修飾,屬於類,類加載時初始化,存方法區// 字面量:常量池中復用
String s1 = "hello";
String s2 = "hello"; // s1 == s2 為 true
// new 對象:堆中新建
String s3 = new String("hello"); // s1 == s3 為 false
String s4 = new String("hello"); // s3 == s4 為 false
// 內容比較永遠用 equals()
s1.equals(s3); // true
JVM 垃圾回收器(GC)監控堆中所有對象,判斷對象是否可達(從 GC Roots 開始搜索引用鏈),回收不可達對象內存。
Object obj = new Object(),寧願 OOM 也不回收SoftReference,內存不足時回收,適合緩存WeakReference,GC 掃描即回收,適合弱關聯映射PhantomReference,不影響生命週期,配合引用隊列跟蹤回收掌握對象模型、訪問控制、類型系統與內存管理,是寫出高質量 Java 代碼的前提。下一篇將深入講解集合框架、異常處理、泛型與反射等進階核心知識點。