在学习了C的一些基础知识之后,我无法掌握Java中循环的逻辑。例如:为什么一个for循环在Java中应该设置:Java数组和循环
for(i=0; i<array.size(); i++)
代替:
for(i=0; i<=array.size(); i++)
在第二种情况下,设置< =大多导致IndexOutOfBoundsException
。
非常感谢您的任何解释。
在学习了C的一些基础知识之后,我无法掌握Java中循环的逻辑。例如:为什么一个for循环在Java中应该设置:Java数组和循环
for(i=0; i<array.size(); i++)
代替:
for(i=0; i<=array.size(); i++)
在第二种情况下,设置< =大多导致IndexOutOfBoundsException
。
非常感谢您的任何解释。
数组大小返回列表中的对象数量。因此,例如在
int[] array = new int[]{ 10, 20, 30 };
我们有三个整数,所以.size()
回报3
。
阵列的索引是从0开始计数虽然向上,所以在阵列中我上面提到:
array[0]
是10;array[1]
是20;array[2]
是30。array[3]
然而,当你使用<= size
,将导致IndexOutOfBoundsException
恰好。
Java数组索引为0到length - 1
。因此,如果您尝试访问length
索引处的元素,则会得到ArrayIndexOutOfBoundsException
。
不仅仅是java,即使在c或C++中,数组索引也是从0开始的。 –
数组是基于零的,所以最后一个例如3个元素的索引为2. [0, 1, 2]
Java数组索引是从零开始的,就像它们在C中一样。如果从零到大小(包括循环)循环,则要在数组的末尾循环一次。例如,想象一个由十个元素组成的数组。如果您使用<=
设置循环,则您的索引将从零(包含)变为10(含),共计十一个值。但是,你的数组只有十个元素,所以会有一个异常。
注:使用!=
代替<
并不少见,太,尤其是当你通过1
迭代。
看这个数组例如:
[12,25,1,24]
数组大小的4
array[0] = 12
array[1] = 25
array[2] = 1
array[3] = 24
所以,你的循环应该是从0到3(你的第一个建议,你的第二个建议是从0到4)
编辑:另外,如果你不关心索引,你可以使用for循环。
for(Object o : objectArray){
//do something
}
它给出IndexOutOfBoundsException,因为数组索引是基于0(零)的,并且达到大小将导致此异常。如果你声明5个元素的数组,索引是0到4,而array.size会给你5,这会导致上述异常 –
@KevinCruijssen这是一个完整的答案。你应该在下面写下这个答案(在它之后删除评论)。 –