☕️[Java] 향상된 for문
- 향상된 for문(Enhanced For Loop)을 이해하려면 배열을 먼저 알아야 합니다.
- 각각의 요소를 탐색한다는 의미로 for-each문이라고도 많이 불립니다.
- 향상될 for문은 배열을 사용할 때 기존 for문 보다 더 편리하게 사용할 수 있습니다.
향상된 for문 정의
for (변수 : 배열 또는 컬렉션) {
// 배열 또는 컬렉션의 요소를 순회하면서 수행할 작업
}
일반 for문
for(int i = 0; i < numbers.length, i++) {
int number = numbers[i];
System.out.println(number);
}
일반 for문은 배열에 있는 값을 순서대로 읽어서 number
변수에 넣고 출력합니다.
배열은 처음부터 끝까지 순서대로 읽어서 사용하는 경우가 많습니다.
그런데 배열의 값을 읽으려면 int i
와 같은 인덱스를 탐색할 수 있는 변수를 선언해야 합니다.
그리고 i < numbers.length
와 같이 배열의 끝 조건을 지정해주어야 합니다.
마지막으로 배열의 값을 하나 읽을 때 마다 인덱스를 하나씩 증가해야 합니다
개발자 입장에서는 그냥 배열을 순서대로 처음부터 끝까지 탐색하고 싶은데, 너무 번잡한 일을 해주어야 합니다.
그래서 향상된 for문
이 등장했습니다.
향상된 for문
// 향상된 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("numbers " + i + "번의 결과는: " + numbers[i]);
}
이 예제에서는 증가하는 i
값을 출력해야 하므로 향상된 for문 대신에 일반 for문을 사용해야 합니다.
물론 다음과 같이 억지스럽게 향상된 for문을 사용하는 것이 가능하지만, 이런 경우 일반 for문을 사용하는 것이 더 좋다.
int i = 0;
for (int number : numbers) {
System.out.println("number" + i +"번의 결과는: " + number);
i++;
}