在學習了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這是一個完整的答案。你應該在下面寫下這個答案(在它之後刪除評論)。 –