for-each循环在JAVA内部如何工作?

for-each循环在JAVA内部如何工作?,第1张

for-each循环在JAVA内部如何工作?

我不会像以前的答案之一那样从Java语言规范中复制粘贴,而是以可读的格式解释该规范。

考虑以下代码:

for (T x : expr) {    // do something with x}

如果

expr
评估为您所用的数组类型,则语言规范指出所产生的字节码将与以下内容相同:

T[] arr = expr;for (int i = 0; i < arr.length; i++) {    T x = arr[i];    // do something with x}

所不同的只是,变量

arr
i
不幸地对您的代码或调试器不可见。这就是开发的原因,第二个版本可能更有用:将返回值存储在调试器可以访问的变量中。

在第一个版本

expr
中,函数调用是简单的,而在第二个版本中,您声明了另一个变量并将函数调用的结果分配给该变量,然后将该变量用作
expr
。我希望它们在性能上没有可测量的差异,因为第二个版本中的其他变量分配应该由JIT编译器优化,除非您在其他地方使用它。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5164900.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-18
下一篇2022-11-18

发表评论

登录后才能评论

评论列表(0条)

    保存