for (초기식; 조건식; 증감식) {
// 코드
}
for
문에서 초기식, 조건식, 증감식은 선택이다. 다음과 같이 모두 생략해도 된다. 단 생략해도 각 영역을 구분하는 세미콜론(;
)은 유지해야 한다.
for ( ; ; ) {
// 코드
}
이렇게 하면 조건이 없기 때문에 무한 반복하는 코드가 된다. 따라서 다음과 같은 코드가 된다.
while (true) {
// 코드
}
1부터 시작하여 숫자를 계속 누적해서 더하다가 합계가 10보다 큰 처음 값은 얼마인가?
package loop;
public class Break2 {
public static void main(String[] args) {
int sum = 0;
int i = 1;
for ( ; ; ) {
sum += i;
if (sum > 10) {
System.out.println("합이 10보다 크면 종료 : i = " + i + " sum = " + sum);
break;
}
i++;
}
}
}
for ( ; ; )
를 보면 조건식이 없다. for
문은 조건이 없으면 무한 반복한다.sum > 10
조건을 만족하면 break
를 사용해서 while
문을 빠져나간다.for
문은 증가하는 값이 무엇인지 초기식과 증감식을 통해서 쉽게 확인할 수 있다. 이 코드나 while
문을 보면 어떤 값이 반복에 사용되는 증가 값인지 즉시 확인하기는 어렵다.
여기서는 i
가 증가하는 값이다. 따라서 다음과 같이 i
를 for
문에 넣어서 관리하도록 변경하면 더 깔끔한 코드가 된다.
package loop;
public class Break3 {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; ; i++) {
sum += i;
if (sum > 10) {
System.out.println("합이 10보다 크면 종료 : i = " + i + " sum = " + sum);
break;
}
}
}
}
정리하면 for
문이 없이 while
문으로 모든 반복을 다룰 수 있다. 하지만 카운터 변수가 명확하거나, 반복 횟수가 정해진 경우에는 for
문을 사용하는 것이 구조적으로 더 깔끔하고, 유지보수 하기 좋다.