Java

[Java] for문 vs 향상된(개선된) for문

김먼저 2022. 12. 30. 09:22

코드를 작성하다가 스크롤 바에 노란색 줄과 경고창(?)이 떠서

 

뭐가 문제인지 살펴봤습니다.

 

 

List<TestDTO> testdtoList = abc(5);

for(int i = 0; i < testdtoList.size(); i++){
    int zz = testdtoList.get(i).getNumber();
}

 

 

 

엥? 뭐 추천도 아니고 왜 바꿀 수 있다고 뜨는거지...???

 

 

뭐 일단 클릭 해볼까....

 

 

 

 

클릭!!

 

 

List<TestDTO> testdtoList = abc(5);

for(TestDTO testDto : testdtoList){
    int zz = testdto.getNumber();
}

 경고등은 사라졌지만 의문은 사라지지 않았습니다.

 

 

대체 뭐가 다르다고 기분 찝찝하게 노란색이 뜨고 그러지??

 

 

 

 

 

 

성능이 엄청나게 차이나나??

 

 

 

    No! 성능차이는 거의 없습니다.

 

 

 

 

 

그럼 어떤 상황에서 써야할까?

 

 

- 해당 리스트나 배열을 모두 읽어야할 때!

 

 

인덱스 값을 사용 못하기 때문에 전체를 읽어야하면 향상된(개선된) for문을,

 

인덱스 값이 필요한 경우라면 일반 for문을 사용.

 

 

 

 

그럼 전체를 읽어야하는 상황에서 왜 향상된(개선된) for문을 권장할까?

 

- 코드 가독성이 좋다.

 

- 인덱스가 배열의 크기가 다를 경우 발생하는

arrayIndexOutofBoundsException을 방지할 수 있다.

 

 

< 정리 >

 

로직 특성상 index에 접근할 필요가 있다면 일반for문을,

 

그런 특정한 케이스가 아니라면 향상된 for문을

 

사용하는 쪽을 권장한다고 합니다.