Home > Archive > Java_archive > ☕️[Java] 향상된 for문

☕️[Java] 향상된 for문
Java Programming Language

☕️[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++;
}