Java 從 JDK 5 開始引入了 Foreach 迴圈。它的目的是按順序迭代 Collection 或數組的所有元素。在其他語言(如 C#)中也存在這種情況,它使用關鍵字 for-each。然而,與 C# 不同,Java 使用關鍵字「for」僅用於實作 for-each 循環,但其語法與傳統的 for 循環不同。這種 for-each 迴圈在 Java 中也稱為增強型 for 迴圈。
開始您的免費軟體開發課程
網頁開發、程式語言、軟體測試及其他
文法:
for(type iter_var : Collection) statement_block
上面使用的每個術語的解釋如下:
需要注意的是,for-each 循環按順序存取集合/數組元素,其中它將每個元素的值儲存在迭代變數中。以下是 for-each 迴圈的流程圖。
如您所注意到的,for 迴圈和 for-each 迴圈之間存在某些細微的差異。 For迴圈需要預先指定迭代次數。然而,for-each 迴圈的情況並非如此,因為迴圈從 Collection/array 的第一個元素迭代到最後一個元素,並且不需要指定迭代次數。
要記住的重要一點是 for-each 迴圈中指定的類型必須與集合中元素的類型匹配,否則會出現相容性問題。
以下是不同的範例:
讓我們使用 for 迴圈來計算一組人的平均年齡:
代碼:
public class Main { public static void main(String[] args) { int ages[] = {15, 18, 16, 17, 14, 12, 13, 20, 22, 25}; int sum = 0; System.out.print("Ages of the group are : "); for (int i = 0; i < 10 ; i++) { System.out.print(ages[i]+" "); sum += ages[i]; } System.out.println("\n Average age of the group = " + (sum/10)); } }
輸出:
使用 for-each 迴圈找出一組人的平均年齡:
代碼:
public class Main { public static void main(String[] args) { int ages[] = {15, 18, 16, 17, 14, 12, 13, 20, 22, 25}; int sum = 0; System.out.print("Ages of the group are : "); for (int x : ages) { System.out.print(x+" "); sum += x; } System.out.println("\n Average age of the group = " + (sum/10)); } }
輸出:
使用兩個循環的輸出是相同的,如上圖所示。
使用break語句可以減少for-each迴圈的迭代次數。例如,如果我們只想求前 5 個元素的總和,我們可以使用break語句,如下所示:
代碼:
public class Main { public static void main(String[] args) { int ages[] = {15, 18, 16, 17, 14, 12, 13, 20, 22, 25}; int ctr = 0, sum = 0; System.out.print("Ages of the group are : "); for (int x : ages) { System.out.print(x+" "); } for (int x : ages) { if (ctr == 5) break; sum += x; ctr += 1; } System.out.println("\nSum of age of first 5 people of the group = " + sum); } }
輸出:
在上面提到的 for-each 迴圈中,x 是迭代變量,每次迭代儲存數組的一個元素,該元素在下一次迭代中發生變化。在第一次迭代中,x 儲存數組的第一個元素和最後一次迭代元素的最後一個元素。與 for 迴圈不同,我們使用索引來存取數組元素,for 每個迴圈使用迭代變數來存取元素。
使用 for 每個迴圈時需要小心,因為迭代變數暫時儲存數組元素的值,因為它是「唯讀」的,並且更改其值不會修改原始數組。這與 for 迴圈相矛盾,在 for 迴圈中更改元素會修改原始陣列。
讓我們考慮一個例子,我們將 5 加到陣列的每個元素。我們可以在以下範例程式碼中發現輸出的差異:
不同條件下的for迴圈解釋如下:
代碼:
public class Main { public static void main(String[] args) { int ages[] = {15, 18, 16, 17, 14, 12, 13, 20, 22, 25}; System.out.print("Elements of the array are : "); for (int i = 0; i < 10; i++) { System.out.print(ages[i]+" "); ages[i]+= 5; } System.out.print("\nNew elements of the array are : "); for (int i = 0; i < 10; i++) { System.out.print(ages[i]+" "); } } }
輸出:
for 迴圈的輸出顯示原始陣列的更新
不同條件下的for迴圈解釋如下:
代碼:
public class Main { public static void main(String[] args) { int ages[] = {15, 18, 16, 17, 14, 12, 13, 20, 22, 25}; System.out.print("Elements of the array are : "); for (int x : ages) { System.out.print(x+" "); x += 5; } System.out.print("\nNew elements of the array are : "); for (int x : ages) { System.out.print(x+" "); } } }
輸出:
for-each 迴圈的輸出顯示原始陣列沒有更新
以上是Java 中的 For-Each 循環的詳細內容。更多資訊請關注PHP中文網其他相關文章!