[JAVA] 04 반복문 for / while
반복문은 같은 코드를 여러 번 실행해야 할 때 사용하는 문법이다. 조건문과 함께 사용되며, 프로그램의 흐름을 구성하는 기본 요소 중 하나다.
1. 반복문이란
반복문은 특정 조건이 만족되는 동안 코드를 반복 실행하기 위해 사용한다. 조건이 false가 되는 순간 반복은 종료된다.
2. for 문
for (초기식; 조건식; 증감식) {
// 반복 실행할 코드
}
for 문 기본 예제
for (int i = 0; i < 5; i++) {
System.out.println(i);
}
OUTPUT
0
1
2
3
4
초기식은 한 번만 실행되고, 조건식이 false가 되면 반복이 종료된다.
3. for 문 동작 순서
- 초기식 실행
- 조건식 검사
- 블록 실행
- 증감식 실행
- 조건식 재검사
조건식은 매 반복마다 검사된다. 이 때문에 조건식이 복잡하면 성능에 영향을 줄 수 있다.
4. while 문
while (조건식) {
// 반복 실행할 코드
}
while 문 기본 예제
int i = 0;
while (i < 5) {
System.out.println(i);
i++;
}
OUTPUT
0
1
2
3
4
while은 조건 중심 반복이다. 증감식이 빠지면 무한 반복이 된다.
5. for 문과 while 문 차이
- 반복 횟수가 명확 → for
- 조건 중심 반복 → while
- 초기식, 증감식이 분산되어 있으면 가독성이 떨어질 수 있음
기능은 동일하지만 코드 의도가 더 잘 드러나는 쪽을 선택하는 것이 중요하다.
6. do-while 문
do {
// 실행 코드
} while (조건식);
do-while 예제
int n = 10;
do {
System.out.println(n);
n++;
} while (n < 5);
OUTPUT
10
조건과 상관없이 최소 한 번은 실행된다. 입력 검증 루프에서 자주 사용된다.
7. break 문
break는 반복문을 즉시 종료한다.
for (int i = 0; i < 10; i++) {
if (i == 5) {
break;
}
System.out.println(i);
}
OUTPUT
0
1
2
3
4
조건이 충족되면 즉시 반복을 빠져나간다.
8. continue 문
continue는 현재 반복을 건너뛰고 다음 반복으로 이동한다.
for (int i = 0; i < 5; i++) {
if (i == 2) {
continue;
}
System.out.println(i);
}
OUTPUT
0
1
3
4
특정 조건만 제외하고 반복하고 싶을 때 사용한다.
9. 중첩 반복문
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++) {
System.out.println(i + ", " + j);
}
}
OUTPUT
1, 1
1, 2
1, 3
2, 1
2, 2
2, 3
3, 1
3, 2
3, 3
중첩 반복문은 반복 횟수가 곱으로 증가한다. 3 × 3 = 9번 실행된다.
이 개념은 시간복잡도(O(n²)) 이해에 매우 중요하다.
10. 무한 반복
while (true) {
// 반복
}
조건이 항상 true이면 무한 반복이 된다. 서버 프로그램에서는 의도적으로 사용되기도 한다.
무한 루프는 반드시 종료 조건이나 break가 포함되어야 한다.
11. 반복문과 성능 (심화)
- 반복 횟수가 많을수록 성능에 직접적인 영향
- 중첩 반복문은 실행 횟수가 기하급수적으로 증가
- 조건식 안에 메서드 호출이 있으면 성능 저하 가능
- 가능하면 반복문 내부 로직을 단순하게 유지
정리
- for 문은 반복 횟수가 명확할 때 사용한다.
- while 문은 조건 중심의 반복에 사용한다.
- do-while 문은 최소 1회 실행이 보장된다.
- break와 continue는 반복 흐름을 제어한다.
- 중첩 반복은 시간복잡도 증가를 의미한다.
'Computer Science > Java' 카테고리의 다른 글
| [JAVA] 06 메서드(Method) (0) | 2026.02.15 |
|---|---|
| [JAVA] 05 배열(Array) (0) | 2026.02.15 |
| [JAVA] 03 조건문 if / switch (0) | 2026.02.15 |
| [JAVA] DI(의존성 주입)란 무엇인가? (0) | 2026.02.15 |
| [JAVA]추상 클래스와 인터페이스 차이 (0) | 2026.02.15 |