[英]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.