CodeGym /Java Blog /무작위의 /Java의 for-each 루프
John Squirrels
레벨 41
San Francisco

Java의 for-each 루프

무작위의 그룹에 게시되었습니다

for-each 루프는 무엇입니까?

for -each는 배열 또는 컬렉션의 모든 요소를 ​​처리해야 할 때 사용하는 일종의 for 루프입니다. 즉, for-each 구문은 이 루프에서 실제로 사용되지 않습니다. 구문은 다음과 같습니다.

for (type itVar : array) 
{ 
    // Operations
}
여기서 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++) 
{ 
    
    // Statements 
}

for-each 루프의 예

우리는 학생 점수 배열을 만듭니다. 그런 다음 for-each 루프를 사용하여 모든 추정치를 인쇄하고 평균 점수를 계산하고 최고 점수를 찾습니다.

public class ForEachTest {
    
// A method that prints all scores     
public static void printAllScores(int[] scores) {
        System.out.print("|");
        for (int num : scores) {

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

// A method that displays the average score 
    
public static double getAverageScore(int[] numbers) {
        int totalScore = 0;

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

    }
// A method that determines the best (maximum) score 
    public static int getBestScore(int[] numbers) {
        int maxScore = numbers[0];

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

public static void main(String[] args) {
      
// Array of scores 
int[] scores = {5, 10, 7, 8, 9, 9, 10, 12};

        
  int bestScore = getBestScore(scores);
        System.out.print("All the scores: ");
        printAllScores(scores);
        System.out.println("The highest score is " + bestScore);
        System.out.println("The average score is " + getAverageScore(scores));
    }

}
프로그램 출력:

All the scores: |5|10|7|8|9|9|10|12|
The highest score is 12
The average score is 8.75
이제 일반 for 루프 를 사용하는 경우 모든 점수를 인쇄하는 방법이 어떻게 보이는지 살펴보겠습니다 .

public static void printAllScores(int[] scores) {
        System.out.print("|");
        for (int i = 0; i < scores.length; i++) {

            System.out.print(scores[i] + "|");
        }
        System.out.println();
    }
기본 메서드 에서 이 메서드를 호출하면 다음과 같은 결과를 얻습니다.

All the scores: |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 루프를 사용하는 것이 좋습니다 .

for-each 루프에 대한 유용한 비디오

CodeGym 과정의 루프

CodeGym에서는 Java 구문 퀘스트의 레벨 4 에서 루프 사용 연습을 시작합니다 . 해당 수준의 여러 수업과 다양한 수준의 많은 작업은 루프 작업 기술을 강화하기 위해 루프에 할애됩니다. 기본적으로 루프를 피할 수 있는 방법은 없습니다. 루프는 프로그래밍에서 가장 중요한 구조 중 하나입니다.

for-each 및 기타 루프에 대한 추가 정보

  1. while 문 . 이 기사는 CodeGym이 학생들에게 루프를 소개하는 데 사용하는 가장 간단한 종류의 루프에 관한 것입니다 while.
  2. 루프 작성을 중지하십시오! Java 8에서 컬렉션 작업을 위한 상위 10가지 모범 사례 . 이 기사는 코스의 절반 이상을 마친 CodeGym 학생들이 컬렉션 작업에 대한 많은 흥미로운 점을 배우는 데 도움이 될 것입니다.
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION