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

코딩Java
읽는데 5분 소요
처음 쓰여진 날: 2026-04-02
마지막 수정일: 2026-04-02
조회수: 2

요약

Java for-each문(향상된 for문)의 기본 문법과 동작 원리를 알아봅니다. 일반 for문과의 차이, 2차원 배열에서의 활용 등 정보처리기사 실기에 출제되는 for-each 개념을 정리합니다.

for-each문 핵심 정리

개념설명예시
for-each문배열의 원소를 처음부터 끝까지 하나씩 꺼내는 반복문 1for (int x : arr)
기본 문법for (타입 변수 : 배열) — 콜론(:)은 "~에서 꺼낸다"는 뜻for (String s : names)
일반 for문과 차이값만 꺼낼 때 사용. 몇 번째 원소인지(인덱스)가 필요하면 일반 for문 사용for (int i = 0; i < arr.length; i++)

for-each문이란? 기초

for-each문은 배열의 원소를 처음부터 끝까지 하나씩 꺼내는 반복문입니다. "향상된 for문(enhanced for)" 이라고도 부릅니다. 여기서 "향상된"은 "더 좋다"는 뜻이 아니라, 배열 순회를 더 간편하게 쓸 수 있도록 추가된 문법이라는 의미입니다.

java
코드 하이라이팅 중...
text
코드 하이라이팅 중...

for (int x : arr) 은 "arr 배열에서 원소를 하나씩 꺼내 x에 담아라" 라는 뜻입니다. 콜론(:)이 "~에서 꺼낸다"는 역할을 합니다.


기본 문법 기초

java
코드 하이라이팅 중...
  • 타입 2: 배열 원소의 타입과 같아야 합니다. int[] 배열이면 int, String[] 배열이면 String
  • 변수명: 꺼낸 원소를 담을 변수 이름. 자유롭게 지을 수 있습니다
  • 배열: 순회할 대상 배열

실행 순서

java
코드 하이라이팅 중...
  1. 배열의 첫 번째 원소 "감자"name에 담고, 중괄호 안의 코드를 실행
  2. 배열의 두 번째 원소 "고구마"name에 담고, 중괄호 안의 코드를 실행
  3. 배열의 세 번째 원소 "옥수수"name에 담고, 중괄호 안의 코드를 실행
  4. 배열의 끝에 도달하면 반복 종료
for-each문 실행 흐름 — 매 반복마다 name에 다른 원소가 담기는 과정

일반 for문과 비교 기초

같은 동작을 일반 for문으로 작성하면 이렇습니다.

java
코드 하이라이팅 중...
구분일반 for문for-each문
인덱스 사용i로 인덱스 접근 가능인덱스 없음
값 접근arr[i]로 접근변수에 바로 담김
역순 순회가능 (i--)불가능 (항상 처음부터 끝까지)
값 수정arr[i] = 값으로 가능배열 원본 수정 불가

역순 순회는 일반 for문으로만 가능합니다.

java
코드 하이라이팅 중...

배열 원소 값을 직접 바꾸는 것도 일반 for문만 가능합니다.

java
코드 하이라이팅 중...
java
코드 하이라이팅 중...
for-each문의 값 복사 — x는 복사본이라 바꿔도 arr는 그대로


2차원 배열과 for-each문 기초

Java의 2차원 배열은 "배열의 배열"입니다. int[][] matrixint[] 타입의 원소들을 담은 배열이며, 각 원소가 또 하나의 1차원 배열(행)입니다. 따라서 for-each문으로 꺼내지는 원소는 1차원 배열(행)입니다.

for-each문과 2차원 배열 — 배열의 배열 구조와 for-each 동작
java
코드 하이라이팅 중...
text
코드 하이라이팅 중...

바깥 for-each에서 int[] row로 받는 이유는, matrix의 각 원소가 int[](1차원 배열)이기 때문입니다. 안쪽 for-each에서 row의 원소를 다시 하나씩 꺼내면 개별 int 값을 얻을 수 있습니다.


정보처리기사 실기 기출 문제


Footnotes

  1. 배열 외에도 컬렉션(Collection)에 사용할 수 있습니다. 컬렉션은 여러 데이터를 모아서 관리하는 자료구조로, ArrayList, HashMap 등이 대표적입니다. 정보처리기사 실기에서는 주로 배열과 함께 출제됩니다.

  2. 타입(자료형)은 변수에 담을 데이터의 종류를 뜻합니다. int는 정수, double은 소수, String은 문자열, boolean은 참/거짓을 저장합니다.


학습 경로
범위: 1단계