자바 반복문 다시 배우기: 조건식 없는 for문과 break
2026-08-03
공부하게 된 계기
자바 기초를 다시 공부하면서 아래 for문을 보게 되었다.
int sum = 0;
for (int i = 1; ; i++) {
sum += i;
if (sum > 10) {
System.out.println("합이 10보다 크면 종료: i=" + i + ", sum=" + sum);
break;
}
}
for문의 괄호 안에는 초기식, 조건식, 증감식이 들어간다고 배웠는데, 가운데 조건식 없이 세미콜론(;)만 있어도 코드가 실행되는 이유가 궁금했다.
질문을 이어가면서 for, if, break 중 무엇이 반복문이고 무엇이 반복을 멈추는지도 다시 구분해 보았다.
먼저 결론
이 코드의 핵심은 한 문장으로 정리할 수 있다.
for가 반복하고,if가 멈출 조건을 검사하고,break가 반복을 멈춘다.
for문은 어디부터 어디까지인가
아래 코드에서는 for (...)와 그 뒤의 중괄호 전체가 반복문이다.
for (int i = 1; ; i++) { // 반복문 시작
sum += i;
if (sum > 10) {
break;
}
} // 반복문 끝
각 요소의 역할은 다음과 같다.
for: 중괄호 안의 코드를 되풀이하는 반복문if: 조건이 참인지 확인하는 조건문break: 가장 가까운 반복문을 즉시 끝내는 명령문
if문은 반복문이 아니다. 반복되는 for문 안에서 매번 조건을 확인할 뿐이다.
for 반복문
├─ sum에 i를 더한다
└─ if 조건문으로 sum > 10인지 검사한다
└─ 참이면 break가 for문을 끝낸다
조건식을 생략해도 실행되는 이유
일반적인 for문의 형태는 다음과 같다.
for (초기식; 조건식; 증감식) {
// 반복할 코드
}
그런데 Java에서는 세 부분을 모두 반드시 작성해야 하는 것은 아니다. 조건식을 생략하면 조건을 항상 만족하는 것처럼 계속 반복한다.
for (int i = 1; ; i++)
이 문장을 우리말로 읽으면 다음과 같다.
i를 1로 시작한다. 반복이 한 번 끝날 때마다i를 1씩 증가시킨다. 조건식이 없으므로 계속 반복한다.
조건식을 쓰지 않아도 두 개의 세미콜론은 남겨야 한다. 세미콜론이 초기식, 조건식, 증감식의 자리를 구분하기 때문이다.
그러면 언제 멈추는가
조건식이 없는 for문은 스스로 멈추지 않는다. 이 예제에서는 반복문 내부의 다음 코드가 종료 시점을 만든다.
if (sum > 10) {
break;
}
정확히 나누면 if가 sum > 10인지 검사하고, 조건이 참일 때 실행된 break가 for문을 멈춘다.
break는 if문을 끝내는 것이 아니다. if는 반복문이 아니기 때문에, 자신을 감싸는 가장 가까운 반복문인 for를 종료한다.
값을 따라가며 확인하기
코드를 한 번에 이해하기 어려울 때는 변수의 값을 한 줄씩 따라가면 된다.
i=1 → sum=1
i=2 → sum=3
i=3 → sum=6
i=4 → sum=10
i=5 → sum=15 → sum > 10이 참 → break
따라서 결과는 다음과 같다.
합이 10보다 크면 종료: i=5, sum=15
break가 실행되면 그 자리에서 바로 반복문을 빠져나간다. 따라서 마지막에는 for문의 증감식인 i++가 실행되지 않는다.
while (true)로 바꾸면
같은 코드를 while문으로도 작성할 수 있다.
int sum = 0;
int i = 1;
while (true) {
sum += i;
if (sum > 10) {
System.out.println("합이 10보다 크면 종료: i=" + i + ", sum=" + sum);
break;
}
i++;
}
이 예제에서 두 반복문의 결과는 같다.
for문은i의 시작값과 증가 방법을 괄호 안에 모아 둘 수 있다.while (true)는 일단 계속 반복하고 내부에서 멈춘다는 모습이 눈에 잘 보인다.
지금 단계에서는 미묘한 표현 차이를 모두 이해하려고 할 필요는 없다. 숫자를 일정하게 증가시키는 반복은 먼저 for를 떠올리고, 조건이 유지되는 동안 반복하는 코드는 먼저 while을 떠올리는 정도면 충분하다.
주의할 점
조건식을 생략하고 종료 방법도 만들지 않으면 무한 반복이 된다.
for (;;) {
// break, return 등의 종료 방법이 없으면 계속 실행된다.
}
실무 코드에서 의도하지 않은 무한 반복이 발생하면 CPU를 계속 사용하거나 프로그램이 응답하지 않을 수 있다. 조건식을 생략했다면 반드시 어디에서 종료되는지 확인해야 한다.
이번에 배운 점
for문 전체가 반복문이다.if는 반복문 안에서 조건을 검사하는 조건문이다.- 조건식이 없는
for문은 계속 반복한다. - 예제에서는
if가 종료 조건을 검사하고break가 실제 반복을 종료한다. - 어려운 코드는 추상적인 설명을 외우기보다 변수 값과 실행 순서를 직접 따라가는 편이 이해하기 쉽다.
- 기억할 문장:
for가 반복하고 →if가 검사하고 →break가 멈춘다.