
本文详解 java 对象引用机制,通过 bankaccount 示例说明 b1 和 b2 实际指向同一内存对象,因此连续 deposit 操作累加作用于同一个 balance,最终输出均为 2000。
在 Java 中,类类型的变量存储的是对象的引用(reference),而非对象本身。这意味着当执行 BankAccount b2 = b1; 时,并未创建新的 BankAccount 实例,而是让 b2 指向与 b1 完全相同的堆内存地址——二者共享同一个 balance 字段。
我们逐步追踪代码执行过程(初始状态:b1 和 b2 均引用同一对象,balance = 500):
b1.deposit(b2.getBalance());
→ b2.getBalance() 返回 500
→ b1.deposit(500) 将 balance 更新为 500 + 500 = 1000
→ 此时 b1 和 b2 所指对象的 balance = 1000b2.deposit(b1.getBalance());
→ b1.getBalance() 返回当前 balance = 1000
→ b2.deposit(1000) 将 balance 更新为 1000 + 1000 = 2000
→ b1 和 b2 仍指向同一对象,balance = 2000-
最终两次 getBalance() 均返回 2000,故输出:
2000 2000
⚠️ 关键注意事项:
立即学习“Java免费学习笔记(深入)”;
- b2 = b1 是引用赋值,不是深拷贝或新实例化;
- 若需独立账户,应显式创建新对象:BankAccount b2 = new BankAccount(b1.getBalance());
- 可用 == 运算符验证引用相等性:System.out.println(b1 == b2); // 输出 true
✅ 总结:Java 的引用语义意味着多个变量可协同操作同一对象状态。理解这一点,是掌握面向对象编程、避免隐蔽 Bug(如意外共享状态)的基础前提。










