for-each문이란?

새로운 형태의 for문은 편의상 for-each문이라 부른다고 합니다.

for-each문은 배열의 첫번째 항목에서 마지막 항목까지 반복되는 동작을 명령할 때 사용합니다.

즉, arr라는 배열에 대해 우리가 자주 사용해왔던 for(int i=0; i<arr.length; i++){}와 완벽하게 동일합니다.

워낙 자주 사용되는 형태라 좀 더 직관적으로 쓸 수 있게 추가된 기능이라 하네요.

사용법

문법은 다음과 같습니다.

for(“배열에 들어있는 자료형” “해당 자료를 부를 임시 이름(int i랑 비슷한 느낌입니다 마음대로 정해도 돼요) : 배열 이름){}

만약 정수가 들어있는 int 배열이라면 아래 예시처럼 되겠네요.

int[] arr = {1, 2, 3, 4, 5};

for(int asdf : arr){
System.out.println(asdf)
}

for(int i=0; i<arr.length; i++){
System.out.println(arr[i]);
}

for문은 완벽하게 똑같이 작동하게 됩니다.

다만 for-each문은 루프 범위를 마음대로 조정할 수 없고 반드시 배열의 처음부터 끝까지 동작이 수행된다고 합니다.

물론 참조 자료형이 들어있는 배열에도 적용 가능합니다.

Student 클래스에 선언한 변수들을 값으로 가진 학생 정보가 studentList라는 배열에 들어있다고 가정합시다.

이 때 for-each문을 사용해 각각의 학생들에게 동일한 동작을 수행하고 싶다면,

for(Student qwerqwer : studentList){
동작내용(qwerqwer);
}

이 역시 기존 for문으로 풀어쓰면

for(int i=0; i<studentList.length; i++){
동작내용(studentList[i]);
}

이 됩니다.

아래는 제가 실습하며 적어본 코드와 결과입니다. 두 for문의 출력결과가 같은걸 확인할 수 있네요.

(인코딩 설정 바꾸면서 한글이 다 깨져버렸어요. 미리 찍어둔 사진으로 대체합니다.)

이미지1
이미지2
이미지3
이미지4

​두 for문의 결과값이 같은걸 확인할 수 있습니다. 이상입니다.