因为我学习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);
}
}
Run Code Online (Sandbox Code Playgroud)
我猜到了答案
1 null(因为引用现在指向另一个对象)
但答案是
1 2
我无法理解增强for循环的行为.
增强的for循环创建了一个Iterator迭代的元素ArrayList.更改a引用以引用new ArrayList不会影响Iterator循环创建的引用.
你的循环相当于
Iterator<String> iter = a.iterator();
while (iter.hasNext()) {
String str = iter.next();
a = new ArrayList<>();
System.out.println(str);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
61 次 |
| 最近记录: |