public class Person { public int age; }

public class Maini { public static void main(String[] args) { Person p1 = new Person(); p1.age = 20; Person p2 = p1; p2.age = 40; } }

上列代码编译、运行后,下列叙述何者正确?(多选) A. p1.age 存储的值为 20 B. p2.age 存储的值为 40 C. p1.age 存储的值为 40 D. p2.age存储的值为 20

正确答案: B. p2.age 存储的值为 40 C. p1.age 存储的值为 40

解析:

在 Java 中,对象赋值使用的是'浅拷贝',即只复制了对象的引用,而不是创建了一个新的对象。因此,当我们使用 p2 = p1 时,p2p1 指向同一个 Person 对象。

当我们修改 p2.age 时,实际上修改的是 p1 对象中的 age 属性,所以 p1.agep2.age 的值都变成了 40。

Java 中对象赋值的理解:浅拷贝与值传递

原文地址: https://www.cveoy.top/t/topic/hdNk 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录