[英]enhanced for-loop behavior for handling collection object
因为我学习Java ..我遇到了以下代码
public static void main(String[] args) {
ArrayList<String> a = new ArrayList<>();
a.add("1");
a.add("2");
for(String str: a){
a = new ArrayList<>();
System.out.println(str);
}
}
我猜到了答案
1 null(因为引用现在指向另一个对象)
但答案是
1 2
我无法理解增强for循环的行为。
增强的for循环创建一个Iterator
来迭代ArrayList
的元素。 改变a
引用来引用新ArrayList
不影响Iterator
,是由环产生。
你的循环相当于
Iterator<String> iter = a.iterator();
while (iter.hasNext()) {
String str = iter.next();
a = new ArrayList<>();
System.out.println(str);
}
当你跑步
for(String str: a)
它从a
获取一个迭代器,然后使用该迭代器进行迭代。 重新分配a
它,因为它没有使用具有迭代器将没有任何效果后a
参考,它使用了迭代器, a
当循环开始返回。
这是因为增强的for循环使用了迭代器。 因此,更改参考不会产生任何影响。 您可以在此处查看不同的方案
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.