我有一个数组:
final int[] exampleArray = new int[ID_DATA_ARRAY_SIZE];
我可以通过多种方式迭代该数组,例如:
方式1:
for (int i = 0; i < exampleArray.length; i++) {
// code where I use 'i' index
}
方式2:
for (int i = 0; i < ID_DATA_ARRAY_SIZE; i++) {
// code where I use 'i' index
}
哪种方式更好?还有其他更好的方法吗?
答案 0 :(得分:3)
如果除了提取元素之外你不需要i
,那么增强的for循环看起来会更好一些:
for(int element : exampleArray) {
//code that uses element
}
如果您使用i来访问阵列和其他东西,那么我认为Way 1是最好的:
for (int i = 0; i < exampleArray.length; i++) {
// code where I use 'i' index
}
原因是下次有人查看代码时,该人会立即看到您正在迭代到数组的长度。如果你选择2(使用常量),读者可能想知道这个常数是否真的是数组的长度。
答案 1 :(得分:1)
处理性能和代码可读性,方式2更好。
按性能评分,使用exampleArray.length
调用“成员”变量,与调用“ local “变量。但是,性能的差异非常微小,除非你进行了大量的计算,否则你永远不会注意到它。
按可读性评分,ID_DATA_ARRAY_SIZE列出了您正在阅读的人的意图,这比看上去更重要。然而,太多的程序员列出了荒谬或模糊的变量名称,这使得阅读他们的代码缺乏自然性。以一种有机方式对我们的思想有意义的方式命名变量和函数使得代码在将来和其他任何人处理时更加简单,使其成为一种良好的实践。
答案 2 :(得分:1)
我看到两种方法的根本区别如下:
方式1:在循环条件中使用常量exampleArray.length 在方式2中:在循环条件中使用常量ID_DATA_ARRAY_SIZE
显然,方式2在性能方面更胜一筹。
这是因为您正在访问exampleArray对象的常量而不是访问成员变量。这个优点在for循环的每次迭代中实现,其中访问length成员的值。
答案 3 :(得分:0)
看看它是关于个人品味的,你想做什么,但是当你使用数组更好地检查数组的null然后做你的东西