Java/[inflearn] 자바 입문

[김영한_자바입문][8. 배열] 향상된 for문 / 일반 for문 (p.19)

줌인. 2024. 1. 19. 16:23
인덱스나 요소 수정이 필요하거나 특정 조건에 따른 반복이 필요한 경우 일반 for문
값만 순회할 경우, 향상된 for문(for-each)문을 사용하자

 

 

 

 

[일반 for문]

// 배열 선언과 초기화
int[] numbers = {1, 2, 3, 4, 5};

// 배열의 길이를 구하고, 인덱스를 사용하여 요소에 접근
for (int i = 0; i < numbers.length; i++) {
        System.out.println(numbers[i]);
}

 

[향상된 for문]

// 배열 선언과 초기화
    int[] numbers = {1, 2, 3, 4, 5};

// 간단한 문법으로 배열의 요소에 접근
for (int num : numbers) { 
        System.out.println(num); //1트 -> num = numbers[0], 2트 -> num = numbers[1]
    }

 

차이점 설명:
1. 문법 간결성:
ⓐ 일반 for문: 배열의 길이를 알아내고, 인덱스를 증가시키며 배열 요소에 접근하는 복잡한 구조.
ⓑ향상된 for문: 간단한 문법으로 배열의 요소에 직접 접근.

 

2. 인덱스 관리:
ⓐ 일반 for문: 인덱스를 직접 관리해야 하므로 코드가 상대적으로 복잡.
ⓑ 향상된 for문: 인덱스를 별도로 신경쓰지 않아도 되어 코드가 간결.

 

3. 컬렉션 사용:
ⓐ 일반 for문: 배열 뿐만 아니라 모든 Iterable 객체에 적용 가능.
ⓑ 향상된 for문: 주로 배열이나 컬렉션 순회에 특화되어 있음.

     (컬렉션 -> 일단은 : 배열과 비슷한 느낌으로 보기)

 

4. 요소 수정:
ⓐ 일반 for문: 요소를 수정할 때 사용 가능.
ⓑ 향상된 for문: 요소를 읽는 용도로만 사용되며, 요소 수정은 불가능.

     (즉 int i와 같은 증가하는 인덱스 값을 직접적으로 사용해야 하는 경우는 사용을 할 수 없다.)

 

 

[결론] 향상된 For문을 사용 하는 경우

① 요소의 값만 필요한 경우 : 요소의 값을 읽기만 하는 경우에는 향상된 for문이 더 간결하고 가독성이 좋음

int[] numbers = {1, 2, 3, 4, 5};

for (int num : numbers) {
        System.out.println(num);
}


인덱스를 사용하지 않는 경우: 인덱스를 사용하지 않고 배열 또는 컬렉션의 값을 순차적으로 처리해야 할 때

List<String> fruits = Arrays.asList("Apple", "Banana", "Orange");

for (String fruit : fruits) {
        System.out.println(fruit);
}

 

[결론] 일반 For문을 사용 하는 경우

① 인덱스나 요소 수정이 필요한 경우 : 배열이나 컬렉션의 요소를 수정하거나 특정 조건에 따라 작업을 수행할 때

int[] numbers = {1, 2, 3, 4, 5};

for (int i = 0; i < numbers.length; i++) {
numbers[i] = numbers[i] * 2;
        }

 

② 조건에 따른 반복이 필요한 경우: 특정 조건을 만족하는 경우에만 반복을 수행해야 할 때

int[] numbers = {1, 2, 3, 4, 5};

// 일반 for문을 사용하여 배열의 각 요소를 검사하고 짝수만 출력
for (int i = 0; i < numbers.length; i++) {
        if (numbers[i] % 2 == 0) {
        System.out.println(numbers[i]);
    }
            }

 

 

728x90