2016-05-11 122 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 
}