향상된 for문을 이해하려면 배열을 먼저 알아야합니다.
혹시 배열을 아직 모르시거나 이해가 되지 않는 분들은 해당 포스팅을 참고하시기 바랍니다.
향상된 for문(Enhanced For Loop)
각각의 요소를 탐색한다는 의미로 for-each문 이라고도 많이 불립니다.
향상된 for문은 배열을 사용할 때 기존 for문 보다 더 편리하게 사용할 수 있습니다.
for(변수 : 배열 또는 컬렉션) {
// 배열 또는 컬렉션의 요소를 순화하면서 수행할 작업
}
코드로 확인해보겠습니다.
먼저 일반 for문은 배열에 있는 값을 순서대로 읽어서 number 변수에 넣고, 출력합니다.
배열은 처음부터 끝까지 순서대로 읽어서 사용하는 경우가 많습니다.
그런데 배열의 값을 읽으려면 int i 와 같은 인덱스를 탐색할 수 있는 변수를 선언해야 합니다.
그리고 i < numbers.length 와 같이 배열의 끝 조건을 지정해주어야 합니다.
마지막으로 배열의 값을 하나 읽을때 마다 인덱스를 하나씩 증가해야 합니다.
향상된 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("number" + i + "번의 결과는: " + numbers[i]);
}
위 예제에서는 증가하는 i값을 출력해야 하므로 향상된 for문 대신에 일반 for문을 사용해야 합니다.
물론 다음과 같이 억지스럽게 향상된 for문을 사용하는 것이 가능하지만,
이런 경우 일반 for문을 사용하는 것이 더 좋습니다.
int i = 1;
for (int number : numbers) {
System.out.println("number" + i + "번의 결과는: " + number);
i++;
}
'Java' 카테고리의 다른 글
[Java] 클래스가 필요한 진짜 이유 (feat.객체 vs 인스턴스) (1) | 2024.02.26 |
---|---|
[Java] 메서드 A 부터 Z 까지 (feat. 오버로딩) (1) | 2024.02.23 |
Java 너 도대체 뭐니? (0) | 2024.02.17 |
[Java] 2차원배열 (0) | 2024.02.15 |
[Java] 배열 이래도 이해가 안된다고? (0) | 2024.02.15 |