자바의 while 루프는 각 반복(iteration)이 시작되기 전에 루프 지속 조건을 먼저 검사한 후, 조건이 참일 때 하나 이상의 문장을 실행합니다. 반면 do-while 루프는 첫 번째 반복을 실행한 이후에 루프 지속 조건을 검사합니다.
따라서 두 루프의 가장 중요한 차이점은 다음과 같습니다.
- while 루프: 조건이 처음부터 거짓(false)이면 루프 본문이 한 번도 실행되지 않을 수 있습니다.
- do-while 루프: 조건 검사가 뒤에 있으므로, 조건과 관계없이 루프 본문이 최소 한 번은 반드시 실행됩니다.
예제 코드
public class WhileAndDoWhileLoop {
public static void main(String args[]) {
int i = 5;
System.out.println("Test while Loop:");
while(i < 5) {
System.out.println("Iteration: " + ++i);
}
System.out.println("Test do-while Loop:");
i = 5;
do {
System.out.println("Iteration: " + ++i);
} while(i < 5);
}
}위 예제에서 변수 i는 5로 초기화되어 있고, 두 루프 모두 i < 5를 조건으로 사용합니다.
- while 루프는 반복 시작 전에
i < 5(즉, 5 < 5)를 검사하므로 거짓이 되어 루프 본문이 단 한 번도 실행되지 않습니다. - do-while 루프는 본문을 먼저 실행한 뒤 조건을 검사하기 때문에,
i가 6으로 증가한 상태로 본문이 정확히 한 번 실행됩니다.
실행 결과
Test while Loop: Test do-while Loop: Iteration: 6
정리
조건을 만족하지 않아도 로직을 최소 한 번은 실행해야 하는 경우(예: 사용자 입력 메뉴 처리)에는 do-while 루프가 적합하고, 조건을 먼저 확인한 후 실행 여부를 결정해야 하는 일반적인 경우에는 while 루프를 사용하는 것이 좋습니다.