加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java for Loop评估

发布时间:2020-12-14 05:46:40 所属栏目:Java 来源:网络整理
导读:我想知道每次循环周期结束时是否在 Java中的for循环和while循环中执行条件评估. 例: int[] tenBig = new int[]{1,2,3,4,5,6,7,8,9,10};for(int index = 0;index tenBig.length;index++){ System.out.println("Value at index: "+tenBig[index]);} 索引每次
我想知道每次循环周期结束时是否在 Java中的for循环和while循环中执行条件评估.

例:

int[] tenBig = new int[]{1,2,3,4,5,6,7,8,9,10};

for(int index = 0;index < tenBig.length;index++){
    System.out.println("Value at index: "+tenBig[index]);
}

索引<每次循环周期结束时都会执行tenBig.length吗? 假设和经验告诉我是的. 我知道在这个例子中,tenBig.length是一个常量,因此不会对性能产生影响. 但我们假设条件操作在不同情况下需要很长时间.
我知道合理的做法是将tenBig.length分配给变量.

我仍然希望确保每次评估它.

解决方法

是的,它将在循环的每次迭代中逻辑地评估整个中间操作数.当JIT知道更好的情况下,当然,它可以做一些聪明的事情(甚至可能根据循环条件去除循环内的数组边界检查).

请注意,对于JIT不知道的类型,它可能无法像这样进行特定优化 – 但仍然可以内联诸如获取ArrayList< T>的size()之类的内容.

最后,我通常更喜欢增强的for循环以提高可读性:

for (int value : tenBig) {
    ...
}

当然,假设您出于其他原因不需要索引.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读