Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 具有静态最终极限的数组迭代_Java_Arrays_Loops - Fatal编程技术网

Java 具有静态最终极限的数组迭代

Java 具有静态最终极限的数组迭代,java,arrays,loops,Java,Arrays,Loops,我有一个数组: 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

我有一个数组:

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
}
哪条路更好?还有其他更好的方法吗?

如果您除了提取元素之外不需要i,那么增强的for循环看起来会更好一些:

for(int element : exampleArray) {
//code that uses element
}
如果您使用i访问阵列和其他内容,那么我认为方式1是最好的:

for (int i = 0; i < exampleArray.length; i++) {
    // code where I use 'i' index
}
原因是,下次有人查看代码时,他会立即看到您正在迭代数组的长度。如果使用常量进行方式2,读者可能会想知道该常量是否真的是数组的长度。

如果提取元素以外不需要i,则增强的for循环看起来更好一些:

for(int element : exampleArray) {
//code that uses element
}
如果您使用i访问阵列和其他内容,那么我认为方式1是最好的:

for (int i = 0; i < exampleArray.length; i++) {
    // code where I use 'i' index
}

原因是,下次有人查看代码时,他会立即看到您正在迭代数组的长度。如果你用一个常数来表示方法2,读者可能想知道这个常数是否真的是数组的长度。

看,这都是关于个人品味的,你想用哪种方式做,但无论何时使用数组,最好先检查数组的null值,然后再执行你的操作。

看,这都是关于个人品味的,你想用哪种方式做,但无论何时使用数组最好先检查数组的null值,然后再处理性能和代码可读性,方法2更好

通过使用exampleArray.length,您调用的是一个成员变量,与调用局部变量相比,该变量需要额外的java字节码来请求。但是,性能上的差异非常微小,除非进行大量计算,否则您永远不会注意到它


ID_DATA_ARRAY_SIZE根据可读性进行分级,它为正在阅读的人展示了您的意图,这比看起来更为重要。然而,太多的程序员给出了无意义或模棱两可的变量名,这使得阅读他们的代码缺乏自然性。以一种有机的方式命名变量和函数对我们的头脑来说是有意义的,这会使代码在将来更容易为自己和其他人处理,使之成为一种良好的实践。

解决性能和代码可读性问题,方法2更好

通过使用exampleArray.length,您调用的是一个成员变量,与调用局部变量相比,该变量需要额外的java字节码来请求。但是,性能上的差异非常微小,除非进行大量计算,否则您永远不会注意到它


ID_DATA_ARRAY_SIZE根据可读性进行分级,它为正在阅读的人展示了您的意图,这比看起来更为重要。然而,太多的程序员给出了无意义或模棱两可的变量名,这使得阅读他们的代码缺乏自然性。以一种有机的方式对变量和函数进行命名,使代码在将来更易于为自己和其他人处理,使其成为一种良好的实践。

我认为这两种方法的根本区别如下:

方法1:在循环条件中使用常量exampleArray.length 方法2:在循环条件中使用常量ID\u DATA\u ARRAY\u SIZE

显然,方式2在性能方面更优越


这是因为您访问的是一个常量,而不是exampleArray对象的成员变量。这一优势在for循环的每次迭代中都可以实现,在这里可以访问length成员的值

我认为这两种方法的根本区别如下:

方法1:在循环条件中使用常量exampleArray.length 方法2:在循环条件中使用常量ID\u DATA\u ARRAY\u SIZE

显然,方式2在性能方面更优越


这是因为您访问的是一个常量,而不是exampleArray对象的成员变量。这一优势在for循环的每次迭代中都可以实现,在这里可以访问length成员的值

1路1将始终有效,直到exampleArray==null 2路1明确显示您的意图3使用final int a:exampleArray如果您不需要,I路1允许与非final数组保持一致,即,您事先不知道大小的参数1路1将始终有效,直到exampleArray==null 2路1明确显示您的意图3用于最终整数a:exampleArray如果您不需要iWay 1,则允许与非最终数组保持一致性,即您不知道前面的大小的参数time@shreyanshjogi:哦?怎么样?@shrejogi-增强的for循环是在Java1.5中引入的。@Ted Hopp:-对不起,我的mistake@shreyanshjogi:哦?怎么样?@sh
REI-Java 1.5中引入了增强的for循环。@Ted Hopp:-对不起,我弄错了,way 2的可读性如何?如果我在for循环中看到ID\u DATA\u ARRAY\u SIZE,我必须检查ID\u DATA\u ARRAY\u SIZE是否为最终值,以及在创建exampleArray时是否使用ID\u DATA\u ARRAY\u SIZE。我的猜测是,通过使用方式1,您不会获得任何实际性能增益。方式2如何更具可读性?如果我在for循环中看到ID\u DATA\u ARRAY\u SIZE,我必须检查ID\u DATA\u ARRAY\u SIZE是否为最终值,以及在创建exampleArray时是否使用ID\u DATA\u ARRAY\u SIZE。我的猜测是,通过执行方式1,您不会获得任何实际性能增益。