Java 향상된 for 루프(for-each): 카운터 없이 배열 순회 간소화
Java에서 컬렉션을 다룰 때 for-each 루프는 전통적인 인덱스 기반 for 루프에 대한 간결하고 읽기 쉬운 대안을 제공합니다. 수동 인덱스 관리를 없애줌으로써 상용구 코드와 잠재적 오프바원(off-by-one) 에러를 줄여줍니다.
문법
for (DataType element : collection) {
// 요소 처리
}
실전 예제
아래에서 String 배열을 기존 for 루프와 for-each 루프로 각각 순회하며 차이점을 비교합니다.
배열 선언:
String[] arrData = {"Alpha", "Beta", "Gamma", "Delta", "Sigma"};
전통적 for 루프
for (int i = 0; i < arrData.length; i++) {
System.out.println(arrData[i]);
}
For-Each 루프
for (String element : arrData) {
System.out.println(element);
}
for-each 버전은 인덱스 변수를 없애고 "각 항목 처리"라는 의도를 아주 명확하게 만듭니다.
기억해야 할 핵심 포인트
- 루프의 선언 타입은 배열 또는 컬렉션의 요소 타입과 일치해야 함
- For-each 루프는 읽기 전용 순회에 이상적; 컬렉션 구조 수정(예: 순회 중 요소 제거) 시 사용하지 말 것
- 대부분의 경우 성능 차이는 미미; 가독성이 선택을 주도해야 함
완전한 클래스 예제
class UsingForEach {
public static void main(String[] args) {
String[] arrData = {"Alpha", "Beta", "Gamma", "Delta", "Sigma"};
System.out.println("Using conventional For Loop:");
for (int i = 0; i < arrData.length; i++) {
System.out.println(arrData[i]);
}
System.out.println("\nUsing Foreach loop:");
for (String element : arrData) {
System.out.println(element);
}
}
}

출력
Using conventional For Loop:
Alpha
Beta
Gamma
Delta
Sigma
Using Foreach loop:
Alpha
Beta
Gamma
Delta
Sigma
두 루프 모두 동일한 결과를 내지만, for-each 루프는 더 적은 코드로 같은 결과를 내며 에러 가능성도 적습니다.