Java 中对象赋值的理解:浅拷贝与值传递
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 时,p2 和 p1 指向同一个 Person 对象。
当我们修改 p2.age 时,实际上修改的是 p1 对象中的 age 属性,所以 p1.age 和 p2.age 的值都变成了 40。
原文地址: https://www.cveoy.top/t/topic/hdNk 著作权归作者所有。请勿转载和采集!