오늘은 Java에서 수도없이 많이 쓰게 되는 For문에 대해 알아보고자 한다.
실습과제를 수행하면서도, 기본적으로 메서드를 구성하는데에도 자주 사용되는 이 for문에 대해 확실히 짚고 넘어가보자! 💪
Java의 for문 종류는 무엇이 있을까
Java의 for문에는 크게 4가지로 나눠져있다고 볼 수 있다.
- 기본 for문
for (int i = 0; i < 5; i++) {
System.out.println(i);
}
- 구성요소 : for (초기식; 조건식; 증감식;) 으로 구성되며 조건을 만족할 때까지 반복해서 실행한다.
- 특징 : 배열이나 컬렉션의 인덱스 기반에 접근 가능하다
- 사용 예시 : 배열/리스트의 인덱스를 활용해야 하는 경우 자주 사용된다.
- 향상된 for문(for-each문)
int[] arr = {10, 20, 30};
for (int num : arr) {
System.out.println(num);
}
- 구성요소 : for (타입 변수 : 배열/컬렉션)
- 특징 : 인덱스 대신 요소 자체를 바로 꺼내온다.
- 사용 예시 : 전체 요소를 순회할 때 (읽기 전용 목적)인 경우 자주 사용된다.
- 중첩 for문 (Nested for문)
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
System.out.println("i=" + i + ", j=" + j);
}
}
- 특징 : for문 안에 for문을 넣어 다차원적인 반복을 구현
- 사용 예시 : 구구단, 2차원(행렬 개념) 배열 처리
- 무한 for문
for (;;) {
System.out.println("무한 반복");
}
- 특징 : 초기식/조건식/증감식 생략 → 조건 없이 계속 실행
- 사용 예시 : 서버 대기 루프, 이벤트 처리 (종료 조건은 break로 제어함)
기본 for문과 다르게 다른 형태의 for문은 어떤 장단점을 갖고 있을까?
- for-each문
- 장점
- ① 코드가 간결하다 (인덱스 관리가 필요하지 않음)
- 인덱스 값(i) 선언,증가,조건 확인 필요 없음
- ② 가독성이 좋다 → 배열/리스트를 돌면서 각 요소에 대해 작업한다는 의도가 명확함
- ③ IndexOutOfBoundsException 같은 인덱스 실수 방지
🧐 IndexOutOfBoundsException가 뭔가요?
→ 배열 내에서 유효하지 않은 값으로 접근할 때 발생하는 예외처리 에러
- ① 코드가 간결하다 (인덱스 관리가 필요하지 않음)
- 단점
- ① 인덱스를 직접 접근할 수 없다.
- 현재 몇 번째 요소인지 알 수 없음
- 특정 인덱스부터 시작/끝까지 순회하는 제어 불가
- ② 요소 수정/삭제에 불편
- arr[i] = 값 같은 방식으로 직접 수정하려면 기본 for문 필요
- List의 특정 위치에서 제거하려면 Iterator나 for문이 필요
- ③ 읽기 전용 순회에 적합
- 값 변경이나 복잡한 제어에는 불리함
- ① 인덱스를 직접 접근할 수 없다.
- 장점
- 중첩 for문 (Nested for문)
- 장점
- ① 다차원 데이터 처리 용이
- 2차원 배열, 표, 행렬, 구구단 같은 구조를 다룰 때 자연스럽게 표현 가능
- ② 명확한 구조
- 바깥 반복문과 안쪽 반복문의 역할이 분명해 논리적으로 구분된 반복 작업 표현 가능
- ① 다차원 데이터 처리 용이
- 단점
- ① 복잡도 증가
- 반복문이 중첩될수록 코드가 길어지고 읽기 어려워짐
- 잘못 설계하면 가독성 저하
- ② 성능 문제
- 시간 복잡도가 곱셈으로 증가, 대량 데이터에서는 성능 저하 발생
- ③ 유연성 부족
- break/continue 제어 시 특정 루프만 빠져나가기 어렵고 가독성이 나빠짐
- ① 복잡도 증가
- 장점
- 무한 for문
- 장점
- ① 조건 없이 반복 가능
- 서버 대기, 게임 루프, 이벤트 감시 등 종료 시점을 명확히 정할 수 없는 경우 유용
- ② 코드 단순화
- for( ; ; ) 혹은 while(true) 한 줄로 무한 반복 구조를 표현 가능
- ① 조건 없이 반복 가능
- 단점
- ① 종료 제어 필요
- break, return, 예외 처리 같은 탈출 장치가 반드시 필요
- 그렇지 않으면 프로그램이 영원히 멈추지 않고 실행됨
- ② 자원 낭비
- 무한히 돌면 CPU와 메모리를 계속 소모 → 종료 조건 미비 시 버그/다운 원인
- ③ 실수 위험
- 의도치 않게 무한 루프에 빠져버리면 디버깅 난이도 상승
- ① 종료 제어 필요
- 장점
for문과 while문은 언제 어느 상황에 쓰는 것이 좋을까?
- 반복 횟수가 정해져 있을 때 : for문 사용
- 예) 배열/리스트 인덱스 순회, 10번 반복하기, 구구단 출력 등..
- 반복 횟수를 알 수 없고, 조건에 따라 멈출 때 : while문 사용
- 예) 사용자 입력 대기, 서버 연결 유지, 특정 조건 충족 시 종료
💡내용을 정리하며 알게된 것
for문의 종류와 for문과 while문의 차이를 인지하고 어느 반복문을 사용해야 하는지에 대해 확실히 짚고 넘어갈 수 있었음
무조건 for-each문이 사용성이 높은 것이 아닌 조건과 동작환경에 따라서 사용해야하는 for문의 종류가 다양해질 수 있음을 알게 되었음
'JAVA' 카테고리의 다른 글
| [JAVA] 배열 개념 확장 정리 (1) | 2025.09.25 |
|---|---|
| [JAVA] String.format에 대해 알아보기 (0) | 2025.09.23 |
| [JAVA] 객체 지향 프로그래밍 개념 정리 (OOP) (0) | 2025.09.19 |
| [JAVA] JSP vs Thymleaf 개념 더 알아보기 (0) | 2025.09.19 |
| [JAVA] Enum이란? (0) | 2025.09.18 |