java - 循环中java缓存数组长度计算

标签 java arrays performance compiler-optimization

<分区>

假设我有一个数组,我想对其进行迭代:

int[] someArray = {1,2,3,4}

for (int i = 0; i < someArray.length; i++) {

    // do stuff
}

每次迭代都会计算这个数组长度,还是会优化为只计算一次?

我应该通过提前计算长度来迭代数组并将其传递给循环吗?

for (int i = 0, length = someArray.length; i < length ; i++) {

    // do stuff
}

最佳答案

来自 JLS 7

10.7 数组成员

数组类型的成员都是以下几种: • public final 字段length,其中包含组件的数量 阵列。长度可以是正数或零。

回到您的问题,java 不会重新计算array.length 上数组中元素的数量。它返回在数组创建期间计算的 public final int length 的值。

关于java - 循环中java缓存数组长度计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30748423/

相关文章:

java - 在 Java 中返回一个可迭代列表

java - 类路径顺序因 JUnit 运行程序而异

arrays - ThisWorksheet 上的数组在 Sheet1 上不可用

javascript - 渲染大表的性能问题

Python和MYSQL性能: Writing a massive number of SQL query results to file

java web app - 无法检索不是来自根文件夹的页面

java - "String[] args"在java中包含什么?

IOS - 如何在 Swift 3 中从 JSON 捕获动态数组维度

arrays - 快速删除数组中的项目

algorithm - 在 q/kdb+ 中,我可以加速 Kadane 的最大子数组问题算法吗?