Java中for-each循环实际上是如何工作的?带示例的详细解释
大家好!我最近开始学习Java,遇到了for-each循环。看起来一切都清楚:for (int x : numbers) { ... } —— 只是遍历数组或集合的元素。但当我深入挖掘时,出现了很多问题。
例如,我写了这样的代码:
List<String> list = new ArrayList<>(); list.add("A"); list.add("B"); list.add("C"); for (String s : list) { if (s.equals("B")) { list.remove(s); // ConcurrentModificationException! } }然后我得到了ConcurrentModificationException。为什么?在普通的for (int i = 0; i < list.size(); i++)中不会发生这种情况。 另一个例子——我尝试通过for-each修改数组元素:int[] arr = {1, 2, 3}; for (int x : arr) { x = x * 2; // 不起作用!数组没有改变 }为什么x不引用数组元素?而且“底层”到底发生了什么?for-each能处理任何数据类型吗?编译器如何...