gpt4 book ai didi

Java foreach 循环中的微妙之处

转载 作者:行者123 更新时间:2023-12-02 05:38:52 24 4
gpt4 key购买 nike

如果我有一个二维对象数组,并且想要将它们全部初始化,我会调用一个循环,例如:

for(int i=0; i<len; i++)
for(int j=0; j<len; j++)
objects[i][j] = new MyObject();

这工作正常,但是当我尝试使用 for-each 构造执行此操作时,它不起作用并且整个数组仍然为空:

for(MyObject[] intermediate: objects)
for(MyObject obj: intermediate)
obj = new MyObject();

他们的行为为何不同?

最佳答案

分配

obj = new MyObject();

只是在变量obj中设置了一个新对象,并没有改变数组中的值,只是改变了引用变量obj

发生的情况是,objects[i][j] 被关联到 obj,然后您更改 obj 的值,而无需更改实际数组。

当您直接分配给objects[i][j]时 - 它会按预期工作,因为您更改了objects[i][j]的值,这这正是您想要做的。

关于Java foreach 循环中的微妙之处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10362491/

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