본문 바로가기
[JAVA]

[처음부터 다시 하는 JAVA] 향상된 for문 (for-each)

by 북방바다코끼리표범 2024. 1. 20.

처음부터 다시 하는 자바 공부는 인프런의 김영한 강사님의 강의를 참고해서 공부했다.

 

 

향상된 for문 (for-each)

//향상된 for문, for-each문
for (int number : numbers) { 
System.out.println(number);
}
  • 앞서 일반 for문과 동일하게 작동함
  • 향상된 for문은 배열의 인덱스를 사용하지 않고, 종료 조건을 주지 않아도 된다. 단순히 해당 배열을 처음부터 끝까지 탐색함
  • 작동 방식 : : 의 오른쪽에 numbers 와 같이 탐색할 배열을 선택하고, : 의 왼쪽에 int number 와 같이 반복할 때 마다 찾은 값을 저장할 변수를 선언한다. 그러면 배열의 값을 하나씩 꺼내서 왼쪽에 있는 number 에 담고 for문을 수행한다. for문의 끝에 가면 다음 값을 꺼내서 number 에 담고 for문을 반복 수행한다. numbers 배열의 끝에 도달해서 더 값이 없으면 for문이 완전히 종료된다.
  • 향상된 for문은 배열의 인덱스를 사용하지 않고도 배열의 요소를 순회할 수 있기 때문에 코드가 간결하고 가독성이 좋다.

향상된 for문을 사용하지 못하는 경우

향상된 for문을 사용하지 못하는 경우가 있다고 한다.
향상된 for문에는 증가하는 인덱스 값이 감추어져 있으므로, int i 와 같은 증가하는 인덱스 값을 직접 사용해야 하는 경우에는 향상된 for문을 사용할 수 없다.

//for-each문을 사용할 수 없는 경우, 증가하는 index 값 필요
for(int i = 0; i < numbers.length; ++i) {
    System.out.println("number" + i + "번의 결과는: " + numbers[i]);
}

이 예제에서는 증가하는 i 값을 출력해야 하므로 향상된 for문 대신에 일반 for문을 사용해야 함


물론 다음과 같이 억지스럽게 향상된 for문을 사용하는 것이 가능하지만, 이런 경우 일반 for문을 사용하는 것이 더 좋음.

int i = 0;
for (int number : numbers) {
System.out.println("number" + i + "번의 결과는: " + number); i++;
}