gpt4 book ai didi

java - 在Java中使用 'enhanced for'迭代时修改数组元素是否有效?

转载 作者:行者123 更新时间:2023-11-30 06:18:48 28 4
gpt4 key购买 nike

考虑这段代码:

    for (int value : values) {
values[value] = -values[value] - 1;
}

当迭代过程到达适当的元素时,是否保证选择更新的值?

通过实验,我发现它按预期工作(迭代产生更新的值)。

同样来自Java spec我可以得出结论,它应该有效:

The enhanced for statement is equivalent to a basic for statement of the form:

for (I #i = Expression.iterator(); #i.hasNext(); ) {
{VariableModifier} TargetType Identifier =
(TargetType) #i.next();
Statement
}

我只是想知道,是否有“官方”确认其有效并保证选择更新的值?

更新:根据评论排除:

I am in doubt because analogous code would be invalid for e.g. ArrayList.

最佳答案

简短回答:是的,保证会获取更新后的值。

长答案:数组上的增强 for 相当于此代码(请参阅 this documentation ,向下滚动到“否则,表达式必然具有数组类型”部分):

T[] #a = Expression;
for (int #i = 0; #i < #a.length; #i++) {
VariableModifiersopt TargetType Identifier = #a[#i];
...
}

因此,它的行为方式与使用索引迭代数组相同。

注意: 非法的一件事是用新的数组对象替换正在迭代的整个数组,即分配 values = new int[...] 有可能超出新分配的数组的末尾。

关于java - 在Java中使用 'enhanced for'迭代时修改数组元素是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48609740/

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