
我不会像以前的答案之一那样从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编译器优化,除非您在其他地方使用它。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)