JavaRush /Java Blog /Random-TW /Java 中的 for-each 循環

Java 中的 for-each 循環

在 Random-TW 群組發布

Java 中的 foreach 是什麼?

For-each 是一種 for 循環,在需要處理陣列或集合的所有元素時使用。「For every」從英文翻譯為「為每個人」。實際上,這個循環中並沒有使用foreach這個短語本身。其語法如下:
for (type itVar : array)
{
    Блок операторов;
}
其中type是迭代變數的類型(與數組中的資料類型相同!),itVar是它的名稱,array是數組(還可能有另一種資料結構,例如某種集合ArrayList),即執行循環的物件。如您所看到的,此設計中未使用計數器;迭代變數迭代數組或集合的元素,而不是索引值。當執行這樣的迴圈時,迭代變數被順序地賦予數組或集合的每個元素的值,之後執行指定的語句塊(或語句)。

除了 for-each 迴圈之外,Java 還有 forEach() 方法。例如,您可以在文章「停止編寫循環!」中閱讀相關內容。在 Java 8 中使用集合的 10 種最佳方法

注意力:for-each 迴圈可以套用於陣列和任何實作 java.lang.Iterable 介面的類別。與上面的程式碼等效的是以下for迴圈:
for (int i=0; i<array.length; i++)
{

    Блок операторов;
}

Java foreach 範例

讓我們創建一系列學生成績。然後,使用 for-each 列印所有分數,顯示平均分數,並找到其中的最大值。
public class ForEachTest {

//method that prints all grades
public static void printAllGrades(int[] grades) {
        System.out.print("|");
        for (int num : grades) {

            System.out.print(num + "|");
        }
        System.out.println();
    }

//method that displays the average score

public static double midGrade(int[] numbers) {
        int grade = 0;

        for (int num : numbers) {
            grade = num + grade;
        }
        return ((double) grade / numbers.length);

    }
//method in which the best (maximum) score is calculated
    public static int bestGrade(int[] numbers) {
        int maxGrade = numbers[0];

        for (int num : numbers) {
            if (num > maxGrade) {
                maxGrade = num;
            }
        }
        return maxGrade;
    }

public static void main(String[] args) {

//array of ratings
int[] grades = {5, 10, 7, 8, 9, 9, 10, 12};


  int highest_marks = bestGrade(grades);
        System.out.print("All the grades: ");
        printAllGrades(grades);
        System.out.println("The highest grade is " + highest_marks);
        System.out.println("The average grade is " + midGrade(grades));
    }

}
程式輸出:
All the grades: |5|10|7|8|9|9|10|12|
The highest grade is 12
The average grade is 8.75
現在讓我們看看使用常規 for 迴圈列印出所有分數的方法是什麼樣的:
public static void printAllGrades(int[] grades) {
        System.out.print("|");
        for (int i = 0; i < grades.length; i++) {

            System.out.print(grades[i] + "|");
        }
        System.out.println();
    }
如果我們從 method 呼叫這個方法main,我們將得到結果:
All the grades: |5|10|7|8|9|9|10|12|

對集合使用 for-each 迴圈的範例

讓我們建立一個名稱集合並在螢幕上顯示所有名稱。
List<String> names = new ArrayList<>();
        names.add("Snoopy");
        names.add("Charlie");
        names.add("Linus");
        names.add("Shroeder");
        names.add("Woodstock");

        for(String name : names){
            System.out.println(name);
        }

for-each 迴圈的限制

for-each 的緊湊形式被認為比 for 更具可讀性,並且在可以完成的地方使用 for-each 被認為是良好的做法。然而,for-each 的通用性不如常規的 for 結構。以下是一些簡單的情況,使用 for-each 根本不起作用或可以起作用,但有困難。
  1. 如果你想從頭到尾經歷一個循環。也就是說,以下程式碼沒有直接的 for-each 類似物:

    for (int i = array.length - 1; i >= 0; i--)
    {
          System.out.println(array[i]);
    }
  2. 如果您想更改數組,則 For-each 不適合。例如,如果不交換數組的元素,就不可能對數組進行排序。或者,在下面的程式碼中,數組元素不會改變,而只會改變迭代變數:

    for (int itVar : array)
    {
        itVar = itVar++;
    }
  3. 如果您正在搜尋數組中的元素並且需要傳回(或傳遞)您正在尋找的元素的索引,那麼最好使用常規的 for 迴圈。

由 JavaRush 學生準備的有關 for-each 的有用視頻

JavaRush 課程中的循環

在 JavaRush,我們在Java 語法任務的第 4 級實作中開始使用循環。有幾場專門針對他們的講座,以及許多不同級別的任務,以加強與他們合作的技能。一般來說,你無法逃避它們;循環是程式設計中最重要的結構之一。

有關 for-each 和循環的更多資訊:

  1. For 和 For-Each 循環:關於我如何迭代、迭代但沒有迭代的故事- 一篇關於 Java 中的 for 和 for-each 循環的詳細文章。專為經過訓練的讀者(約 JavaRush 10 級及以上)而設計。
  2. 同時聲明。本文主要介紹最簡單的循環while,您可以透過它開始熟悉 JavaRush 中的循環。
  3. 別再寫循環了!在 Java 8 中使用集合的 10 種最佳方法。從本文中,已經完成一半或更多課程的 JavaRush 學生將學到很多有關使用集合的知識。
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION