Java沒有指針(Pointer),只有引用。對象變量存儲的是對象在堆內存中的地址引用,可理解為「受限指針」:
+, -, ++ 等)。| 特性 | C/C++ 指針 | Java 引用 |
|---|---|---|
| 存儲內容 | 內存地址數值 | 對象引用(JVM 內部地址/句柄) |
| 算術運算 | 支持 | 不支持 |
| 釋放內存 | 手動 free/delete | 自動 GC |
| 空值 | NULL/nullptr | null |
| 傳參方式 | 值傳遞(地址) | 值傳遞(引用副本) |
void modify(Person p) {
p.setName("李四"); // 修改對象內容,外部可見
p = new Person("王五"); // 修改局部引用指向,外部不可見
}
Person p = new Person("張三");
modify(p);
System.out.println(p.getName()); // "李四"
p 的引用副本傳給形參。String, 包裝類, 自定義 final 類)天然線程安全,無副作用風險。AtomicReference, Holder)。總結:Java 對象變量本質是引用,可類比 C 指針但去除了危險操作,配合 GC 實現內存安全。