簡體   English   中英

奇怪的每個循環java

[英]Strange for-each loop java

誰能告訴我,它為什么有效?

int[] ints = {1,2,3};
for(int i : ints) {
System.out.println(i); i = 0;
}

為什么我可以將0設置為i,但它仍然會迭代?

因為i不是該循環中的控制變量,所以它只是數組中的一個值。 根據JLS§14.4.2 ,對於數組,增強的for循環等效於:

增強的for語句相當於表單的基本for語句:

...

 for (int #i = 0; #i < #a.length; #i++) { {VariableModifier} TargetType Identifier = #a[#i]; Statement } 

所以將它應用於你的循環:

int[] ints = {1,2,3};
for (int index = 0; index < ints.length; index++) {
    int i = ints[index];
    System.out.println(i);
    i = 0;
}

在這種情況下, i不是循環索引,它是數組當前元素的值。 因此,更改它不會影響迭代。

它相當於:

int[] ints = {1,2,3};
for (int index = 0; index < ints.length; index++) {
    int i = ints[index];
    System.out.println(i);
    i = 0;
}
for( int i : ints ) 

被稱為增強的循環。 當你像這樣處理iterable時,你可以在iterable中處理元素而不是index。

你可以讀這個

對於每個元素我{//這樣做; }

在你的情況下, i不是索引,它是可迭代的當前元素。

iterable不是Iterable的實例。 從一般意義上講,任何可以像這樣迭代的集合。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM