2016-05-11 79 views
-1

在学习了C的一些基础知识之后,我无法掌握Java中循环的逻辑。例如:为什么一个for循环在Java中应该设置:Java数组和循环

for(i=0; i<array.size(); i++) 

代替:

for(i=0; i<=array.size(); i++) 

在第二种情况下,设置< =大多导致IndexOutOfBoundsException

非常感谢您的任何解释。

+0

它给出IndexOutOfBoundsException,因为数组索引是基于0(零)的,并且达到大小将导致此异常。如果你声明5个元素的数组,索引是0到4,而array.size会给你5,这会导致上述异常 –

+1

@KevinCruijssen这是一个完整的答案。你应该在下面写下这个答案(在它之后删除评论)。 –

回答

2

数组大小返回列表中的对象数量。因此,例如在

int[] array = new int[]{ 10, 20, 30 }; 

我们有三个整数,所以.size()回报3

阵列的索引是从0开始计数虽然向上,所以在阵列中我上面提到:

  • array[0]是10;
  • array[1]是20;
  • array[2]是30。

array[3]然而,当你使用<= size,将导致IndexOutOfBoundsException恰好。

4

Java数组索引为0到length - 1。因此,如果您尝试访问length索引处的元素,则会得到ArrayIndexOutOfBoundsException

+0

不仅仅是java,即使在c或C++中,数组索引也是从0开始的。 –

2

数组是基于零的,所以最后一个例如3个元素的索引为2. [0, 1, 2]

4

Java数组索引是从零开始的,就像它们在C中一样。如果从零到大小(包括循环)循环,则要在数组的末尾循环一次。例如,想象一个由十个元素组成的数组。如果您使用<=设置循环,则您的索引将从零(包含)变为10(含),共计十一个值。但是,你的数组只有十个元素,所以会有一个异常。

注:使用!=代替<并不少见,太,尤其是当你通过1迭代。

3

看这个数组例如:

[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 
}