자바에서는 다양한 종류의 반복문을 사용할 수 있다. 이러한 반복문들은 특정 조건을 만족할 때까지 코드 블록을 반복적으로 실행하는 데 사용된다. 가장 일반적인 반복문은 for, while, do-while문들이 있는데 이들을 하나하나씩 자세히 알아보는 시간을 가져보자.
1. for
for 루프는 초기화식, 조건식, 증감식으로 구성되어 있다. 초기화식은 반복을 시작하기 전에 한 번만 실행되며, 조건식은 각 반복마다 평가되어 조건을 검사한다. 조건식이 참일 경우 루프 본문이 실행되고, 증감식은 각 반복 후에 실행된다.
예제 코드 - for 루프의 기본 구조
for (초기화식; 조건식; 증감식) {
// 반복 실행할 코드
}
1. 초기화식(Initialization)
루프가 시작될 때 처음 한 번만 실행되며, 반복 변수를 초기화하는 역할을 한다.
2. 조건식(Condition)
루프가 각 반복에서 실행되기 전에 평가되는 부울 표현식이다. 조건식이 true인 경우 루프는 계속 실행된다. 조건식이 false이면 루프가 종료된다.
3. 증감식(Increment/Decrement)
각 반복 후에 실행되는 코드로, 반복 변수를 증가시키거나 감소시키는 역할을 한다. 이를 통해 반복 변수가 변화하며 루프의 종료 조건을 만족하게 된다.
예제 코드 1
for (int i = 1; i <= 5; i++) {
System.out.println(i);
}
1
2
3
4
5
초기화식이 int i = 1에서 i를 1로 초기화하고 조건식은 i <= 5로 설정함으로써 i가 5 이하인 경우에만 루프를 계속 실행하게 한다. i++은 루프가 한 번 실행될 때마다 1씩 증가시키는 역할을 한다.
예제 코드 2
for (int i = 5; i >= 1; i--) {
System.out.println(i);
}
5
4
3
2
1
i는 5부터 시작하여 1까지 감소하며, i-- 연산자를 통해 감소한다. 따라서 루프는 5부터 1까지의 숫자를 역순으로 출력하고, i가 0이 되면 조건식이 false가 되어 루프가 종료된다.
2. while
while 루프는 조건이 true인 동안 반복 작업을 수행하는 데 사용되는 반복 제어 구조이다. while 루프는 주어진 조건이 참일 때 코드 블록을 반복적으로 실행하며, 조건이 거짓이 될 때까지 계속 반복된다.
예제 코드 - while 루프의 기본 구조
while (조건식) {
// 반복 실행할 코드 블록
}
1. 조건식(Condition)
for 루프와 마찬가지로 루프가 각 반복에서 실행되기 전에 평가되는 부울 표현식이다. true일 경우 실행되고 false일 경우 루프가 종료된다.
2. 반복 실행할 코드 블록
조건식이 true일 때 실행되는 코드 블록으로, 반복 작업이 이곳에서 정의된다.
예제 코드 1
int i = 1;
while (i <= 5) {
System.out.println(i);
i++;
}
변수 i를 초기화하고, i가 5 이하인 동안 루프를 실행한다. 루프 내에서 System.out.println(i)를 사용하여 i의 값을 출력하고 i++를 사용하여 i를 1씩 증가시킨다.
예제 코드 2
while(true){
// 반복 실행할 코드
if(조건식){
break;
}
}
while(true)를 사용하는 경우에는 무한 루프(infinite loop)가 생성되며, 루프를 종료하기 위한 특정 조건을 프로그래머가 직접 관리해야 한다. 무한 루프를 사용할 때는 주의가 필요하며, 루프 내에서 적절한 종료 조건을 설정해야 한다.
예제 코드 3
public class InfiniteLoopExample {
public static void main(String[] args) {
int count = 0;
while (true) {
System.out.println("무한 루프 실행 중... " + count);
// 어떤 조건에 따라 루프를 종료하도록 설정
if (count >= 5) {
break; // count가 5 이상이면 루프 종료
}
count++; // count를 증가시킴
}
System.out.println("루프 종료");
}
}
while(true)를 사용하여 무한 루프를 생성하였다. 그러나 if(count >= 5) 조건을 사용하여 count가 5 이상이면 break 문을 사용하여 루프를 종료하도록 설정하였다. 따라서 count가 5까지 증가하면 루프가 종료되고, "루프 종료" 메시지가 출력된다.
무한 루프를 사용할 때는 항상 적절한 종료 조건을 설정해야 하며, 종료 조건을 설정하지 않으면 프로그램이 무한 루프에 갇히게 된다. 무한 루프를 사용할 때는 주의해서 사용하는 것이 좋다.
3. do-while
do-while 루프는 while 루프와 유사하지만, 루프의 조건을 검사하기 전에 루프의 본문이 최소환 한 번 실행되는 특징을 가지고 있다. 이것은 반복 작업을 최소한 한 번 실행하고 나중에 조건을 감시하고자 할 때 유용하다.
예제 코드 - do-while의 기본 구조
do {
// 반복 실행할 코드 블록
} while (조건식);
do 다음에 오는 코드 블록은 조건식을 검사하기 전에 먼저 실행된다. 그런 다음 조건식이 true인 경우 루프가 계속 실행된다. 조건식이 false인 경우 루프가 종료된다.
예제 코드 2
int i = 1;
do {
System.out.println(i);
i++;
} while (i <= 5);
초기화된 변수 i는 1부터 시작하고 do 다음에 오는 코드 블록에서는 System.out.println(i)를 사용하여 i의 값을 출력하고, i를 1씩 증가시킨다. while(i <= 5)에서 i가 5 이하인 경우에는 루프가 계속 실행된다.
따라서 이 루프는 1부터 5까지의 숫자를 출력하고, i가 6이 되면 조건식이 false가 되어 루프가 종료된다. do-while 루프는 루프 본문을 최소한 한 번 실행하려는 경우에 유용하며, 조건을 나중에 검사하고자 할 때 사용된다.