gpt4 book ai didi

Java - 与对象分配混淆

转载 作者:行者123 更新时间:2023-11-30 10:48:29 25 4
gpt4 key购买 nike

the program

最近几天我一直在关注 Lynda.com 的 java 教程,我对这一部分感到很困惑,尤其是涉及到这一行:

p1 = new Property(230000, "Estate", 2.0, 2, 3)

我已经两次将 p1 添加到 ArrayList mls,但是当我使 Property p1 对象等于 Property 类的新对象时,这里到底发生了什么?

我是在更改 p1 的初始值还是从“对象 p​​1”创建新对象?

最佳答案

Java 中的对象变量始终是引用。

Property p1 = new Property(230000, "Estate", 2.0, 2, 3)

这在堆上分配了一个新的 Property 对象并将 p1 设置为对它的引用。

p1 = some_other_property;

这使 p1 现在成为对变量 some_other_property 引用的同一属性的引用。我们复制了引用。

一些函数(p1)

这将引用 p1 复制到 someFunction 的参数中。请注意,对引用的这种操作实际上并没有改变 Property 对象,我们只是对它的引用进行了处理。

这也意味着您可以有多个指向同一底层对象的引用。如果将 p1 添加到 ArrayList 两次,然后执行使对象发生变异的操作,则 ArrayList 中的两个条目都将反射(reflect)更改(因为两者都引用同一事物)

这个问题提供了一些相关且有趣的细节:

Is Java "pass-by-reference" or "pass-by-value"?

关于Java - 与对象分配混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35788289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com