我想填充创建的数组:
Object[] objects = new Object[10];
for (Object obj : objects){
obj = new Object();
}
Android Studio 写到变量obj不在任何地方使用,循环不应该给对象一个引用吗?
我想填充创建的数组:
Object[] objects = new Object[10];
for (Object obj : objects){
obj = new Object();
}
Android Studio 写到变量obj不在任何地方使用,循环不应该给对象一个引用吗?
首先,重要的是要注意 foreach 循环旨在遍历一个序列而不改变它。如果您需要修改可迭代序列,则必须使用常规 for 和索引访问,或者使用带有显式迭代器的 for。
要了解发生了什么,您需要意识到数组单元格和循环变量是两个不同的变量,即使它们包含相同的值。假设它
objects[0]包含值 0x123456789,它是某个对象的地址。在第一次迭代中,这个值被赋给循环变量。在循环体中,为循环变量分配一个新值——比如 0x987654321。现在循环变量引用了新对象,但数组单元格仍然引用了旧对象。