JavaRush /Java Blog /Random-KO /Java의 for-each 루프

Java의 for-each 루프

Random-KO 그룹에 게시되었습니다

Java에서 foreach란 무엇입니까?

For-each는 배열이나 컬렉션의 모든 요소를 ​​처리해야 할 때 사용되는 for 루프 유형입니다. "각각"은 영어에서 "모든 사람을 위해"로 번역됩니다. 실제로 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();
    }
메소드에서 이 메소드를 호출하면 다음과 같은 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 Syntax 퀘스트의 레벨 4 부터 실제로 루프를 사용하기 시작합니다 . 그들과 관련된 여러 강의와 함께 일하는 기술을 강화하기 위한 다양한 수준의 많은 작업이 있습니다. 일반적으로 루프는 프로그래밍에서 가장 중요한 구성 요소 중 하나이므로 이 오류를 피할 수 없습니다.

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

  1. For 및 For-Each 루프: 반복하고 반복했지만 반복하지 않은 방법에 대한 이야기 ​​- Java의 for 및 for-each 루프에 대한 상세 기사입니다. 숙련된 독자(대략 JavaRush 레벨 10 이상)를 위해 설계되었습니다.
  2. while문 . while이 기사는 JavaRush의 사이클에 익숙해지기 시작하는 가장 간단한 사이클에 대해 다룹니다 .
  3. 사이클 쓰기를 중단하세요! Java 8에서 컬렉션 작업 을 위한 최고의 10가지 방법 이 기사를 통해 이미 과정의 절반 이상을 이수한 JavaRush 학생은 컬렉션 작업에 대해 많은 것을 배울 수 있습니다.
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION