[Java] 향상된 for문 (for - each문)

2024. 9. 2. 00:30·Java

향상된 for 문 (for - each)문이란

배열을 배우고 응용하다 보면 배열의 0번째 인덱스부터 끝까지 한번 돌리고 싶은데,

우리가 그럴 때마다 어떻게 했는가? 일단 아래 예시를 보자.

//기존 for 문 사용
public class BaboFor {
    public static void main(String[] args) {
        int[] numbers = {1,2,3,4,5}; // 배열 초기화

        for(int i = 0 ; i < numbers.length ; i++){
            System.out.println(numbers[i]);
        }
    }
}

단순히 배열을 순회하고 싶은데, 위 코드는 쓸데없이 귀찮은 작업들을 몇 가지 해줘야 한다.

  1. 인덱스 변수 i 선언 → 메모리 낭비
  2. i < numbers.length와 같이 조건문도 지정 해줘야한다
  3. i++을 통해 인덱스를 하나씩 증가 해줘야한다

 

이러한 귀찮은 작업들을 생략할 수 있는 아주 좋은 기능이 있는데, 이것이 바로 향상된 for문인 for-each문이다.

위 코드와 작업은 동일하게 하도록 코드를 리펙토링 해보자.

//for-each문 사용하여 리펙토링
public class ChunjaeFor {
		public static void main(String[] args) {
        int[] numbers = {1,2,3,4,5}; // 배열 초기화

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

딱봐도 코드가 훨씬 간결해지지 않았습니까..

위 코드를 설명하자면,

  1. 일반 for문과 동일하게 작동
  2. 배열의 인덱스와 종료조건을 설정할 필요가 없다
  3. : 기호를 기준으로 오른쪽에는 탐색할 배열(numbers)를 선택하고 왼쪽에는 반복할때마다 값을 저장해줄 변수(number)를 선언한다
  4. : for 문인만큼 배열의 값을 하나씩 꺼내서 변수에 저장하는 작업을 반복한다
  5. 배열을 탐색하며 마지막에 도달하였을 때, 더이상 꺼낼 원소가 없으면 for 문을 종료한다

→ 즉 귀찮게 인덱스나 조건문을 설정해주지 않아도 배열의 요소를 순회할 수 있기 때문에 코드가 간결하고 가독성이 올라간다.

 

단 이러한 for-each 문을 사용할 수 없는 상황이 한가지 존재하는데,

인덱스 값이 증가하는것을 표현하거나 하는 작업을 하기 위해 인덱스를 직접적으로 사용해야하는 경우에는 for-each문을 사용할 수 없다.

바로 코드로 알아보자.

for(int i = 0 ; i < numbers.length ; ++i){
            System.out.println("number" + i + "번 값은" + number);
        }

요딴식으로 i 값을 보여주기 위해 직접 표현해야하는 경우에는 사용할 수 없다.

항상 코드는 가독성이 좋고 간결하게 짜는게 좋다. 아무리 아는 문법이라도 더 열심히 공부하자

그럼 오늘도 20000!

'Java' 카테고리의 다른 글

[Java] 다운 캐스팅 , instanceof  (0) 2024.09.21
[Java] 절차 지향 프로그래밍(PP) VS 객체 지향 프로그래밍(OOP)  (0) 2024.09.08
[Java] Java에서의 스코프(Scope)  (0) 2024.08.31
[Java] 객체 지향 언어의 특성(OOP)  (0) 2024.08.19
[Java] 예외 처리 (Exception) 워밍업  (0) 2024.08.15
'Java' 카테고리의 다른 글
  • [Java] 다운 캐스팅 , instanceof
  • [Java] 절차 지향 프로그래밍(PP) VS 객체 지향 프로그래밍(OOP)
  • [Java] Java에서의 스코프(Scope)
  • [Java] 객체 지향 언어의 특성(OOP)
xuv2
xuv2
집에 가고 싶다
  • xuv2
    xuvlog
    xuv2
  • 전체
    오늘
    어제
    • 전체 글 모아보기 (183) N
      • 잡담 (10)
      • 도전 , 자격증 (3)
      • Error (5)
      • Java (23)
      • Spring (40)
        • Core (10)
        • MVC (21)
        • Thymeleaf (9)
      • DataBase (15) N
        • Database Modeling (4)
        • MySQL (11) N
      • HTTP (11)
      • Network (17)
      • Software Engineering (3)
      • Operating System (3)
      • Algorithm (16)
      • Project (19)
        • Web (9)
        • iOS (8)
        • Python (1)
        • Toy Project (1)
      • A.I (13)
      • Linux (5)
  • 블로그 메뉴

    • 홈
  • 링크

    • Github
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
xuv2
[Java] 향상된 for문 (for - each문)
상단으로

티스토리툴바