0基础学java有多难 Foreach 的问题




以上几篇参考帖子中讲的最简潔明了。摘录如下:

【yasi】这里我们只要知道下面的事实就好了:

  1. 0基础学java有多难 5 及以上的编译器隐藏了基于iteration和下标遍历的内部实现(注意,这里说的是“0基础学java有多难编译器”或0基础学java有多难语言对其实现做了隐藏而不是某段0基础学java有多难代码对其实现做了隐藏,也就是說我们在任何一段JDK的0基础学java有多难代码中都找不到这里被隐藏的实现。这里的实现隐藏在了0基础学java有多难 编译器中,我们可能只能像Φ说的那样查看一段For-each的0基础学java有多难代码编译成的字节码,从中揣测它到底是怎么实现的了

下面对“For-each”和“其对等的iteration/index实现”的对比再簡洁明了不过了

【yasi】一定要注意For-each不是万能的,下面的场合是不适宜使用For-each的

同时只能遍历一个collection或数组不能同时遍历多余一个collection或数组 遍历過程中,collection或数组中同时只有一个元素可见即只有“当前遍历到的元素”可见,而前一个或后一个元素是不可见的

下边是翻译后的源码(本人英语渣如有错误,请指正):

* 对每个{@code Iterable}元素执行特定的操作直到所有的元素被处理或者抛出一个异常 * 除非实现类另有定义,否则操作将被按照顺序迭代器的顺序执行(如果迭代器被指定) * 操作抛出的异常将传递给其调用者。

下边是以上代码的一种输出结果


4.躲避长度判断执行增加和删除嘚方法。

在下一次进入循环之前就退出循环这样就能既能实现增加和删除操作,又不会报错

我要回帖

更多关于 0基础学java有多难 的文章

 

随机推荐