Java中对象传递是引用的值传递,即传递引用副本。p和ref指向同一堆对象,修改ref.name会改变共享对象,但ref重新赋值不影响p,原对象在堆中持续存在直至无引用被回收。

在Java中,对象的传递始终是引用传递,但这里的“引用”本身是按值传递的。理解这一点对掌握内存变化至关重要。
Java中所有对象都存储在堆(heap)内存中,而变量保存的是指向这个对象的引用(可以理解为地址)。当把一个对象传给方法时,实际上传递的是这个引用的副本,而不是对象本身。
也就是说,形参和实参指向同一个堆中的对象,但它们是两个不同的引用变量。
假设有一个类:
立即学习“Java免费学习笔记(深入)”;
class Person { String name; }
执行以下代码:
Person p = new Person();
p.name = "Alice";
change(p);
void change(Person ref) {
ref.name = "Bob";
}
内存变化如下:
关键区别在于:
Java对象引用传递时:
以上就是在Java中对象引用传递时内存如何变化的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号