반복적인 행동을 할 때 우리가 하나하나 코드로 치면 끝도 없는데 이를 편하게 해주는 것이 반복문이다.
예를 들면 '1부터 10까지 더해주세요' 를 코드로 치면
int num;
num += 1;
num += 2;
......
num += 10;
이런식으로 하나하나 쳐야하지만 반복문이라는 걸 사용하면 편리하게 해준다는 거다.
while문
조건식이 참인 동안 수행문을 반복해서 수행한다.
while(조건식){
수행문1;
}
수행문2;
어떠한 조건을 만족하는 동안 중괄호 안의 수행문을 반복해서 처리한다.
- 1부터 10까지 더하는 예제
public class WhileExample {
public static void main(String[] args) {
int num = 1;
int sum = 0;
while(num <= 10) {
sum += num;
num++;
}
System.out.println("1부터 10까지 합은 " + sum + "입니다.");
}
}

위 예제는 num 변수와 sum 변수를 선언하면서 동시에 초깃값을 저장했다.
변수는 항상 초기화해야 하는 것은 아닌데, 이 예제에서는 반드시 초기화해야한다.
초기화하지 않으면 오류가 나는데 그 이유는
while문 내부 sum에 num 값을 더해주는데 num값이 먼저 정해져 있지 않다면 sum에 무엇을 더해야 할지 알 수 없다.
또 sum 값도 정해져 있지 않다면 어떤 값에 num 값을 더해야 할지 알 수 없다.
즉 변수를 사용하여 연산을 하거나 그 값을 가져다 사용하려면 변수는 반드시 어떤 값을 가지고 있어야 한다.
- while문이 무한히 반복되는 경우
어떤 일들은 수행할 때 멈추면 안 되고 무한 반복해야 하는 경우도 있다.
예로 인터넷 쇼핑몰이 있는데 인터넷 쇼핑몰이 24시간 서비스하기 위해서는 쇼핑몰의 데이터를 저장하고 있는 웹 서버가 멈추지 않고 끊임없이 돌아가야 한다.
이처럼 끊임없이 돌아가는 서비스를 데몬(daemon)이라고 부른다.
즉 데몬서비스를 구현할 때 무한 반복을 사용해야 한다
while문의 구조를 볼 때 조건식이 참이면 반복한다.
따라서 while문을 다음과 같이 사용하면 조건이 항상 '참' 이 되어 무한 반복한다.
while(true){
....
}
do-while문
while 문은 조건을 먼저 검사하기 때문에 조건식에 맞지 않으면 반복 수행이 한 번도 일어나지 않는다.
하지만 do-while문은 중괄호 안의 문장을 무조건 한 번 수행한 후에 조건식을 검사한다.
즉 조건이 만족하는지 여부를 마지막에 검사하는 것이다.
따라서 중괄호 안의 문장을 반드시 한 번 이상 수행해야 할 때 do-while문을 사용한다.
- do-while문의 구조
do{
수행문1;
} while(조건식);
수행문2;
- 1부터 10까지 더하는 예제
public class DoWhileExample {
public static void main(String[] args) {
int num = 1;
int sum = 0;
do {
sum += num;
num++;
} while(num <= 10);
System.out.println("1부터 10의 합은 " + sum + "입니다.");
}
}

for문
반복문 중 가장 많이 사용된다.
반복문을 구현하는 데 필요한 여러 요소(변수의 초기화식, 조건식, 증감식)를 함께 작성한다.
- for문의 기본 구조
for(초기화식; 조건식; 증감식){
수행문;
}
초기화식은 for문이 시작할 때 딱 한 번만 수행하며 사용할 변수를 초기화한다.
조건식에서 언제까지 반복 수행할 것인지 구현한다.
증감식에서 반복 횟수나 for문에서 사용하는 변수 값을 1만큼 늘리거나 줄인다.
- 1부터 10까지 더하는 for문
public class ForExample {
public static void main(String[] args) {
int i;
int sum;
for(i = 1, sum = 0; i <= 10; i++) {
sum += i;
}
System.out.println("1부터 10까지의 합은 " + sum + "입니다.");
}
}

초기화식이나 증감식에서 콤마(,)를 사용하여 여러 문장을 사용할 수 있다.
위 예제에서는 초기화식에 콤마를 사용하여 두가지 변수를 초기화를 했다.
- for문 요소 생략하기
for문을 구성하는 요소는 코드가 중복되거나 논리 흐름상 사용할 필요가 없을 때 생략할 수 있다.
초기화식 생략
이미 이전에 다른 곳에서 변수가 초기화되어 중복으로 초기화할 필요가 없을 때 초기화 부분을 생략 할 수 있다.
int i = 0;
for(; i < 5; i++){
....
}
조건식 생략
어떤 연산 결과 값이 나왔을 때 바로 for문의 수행을 멈추려면 조건식을 생략하고 for문 안에 if문을 사용하면 된다.
for(i = 0; ; i++){
sum += 1;
if(sum > 200) break;
}
증감식 생략
증감식의 연산이 복잡하거나 다른 변수의 연산 결과 값에 좌우된다면 증감식을 생략하고 for문 안에 쓸 수 있다.
for(i = 0; i < 5; ){
i = (++i) % 10;
}
요소 모두 생략
모든 요소를 생략하고 무한 반복하는 경우에 사용한다.
for( ; ; ){
.....
}
각 반복문을 언제, 어떤 경우에 사용할까?
for
반복 횟수가 정해진 경우
do-while
반드시 한 번 이상 수행해야 하는 경우
while
이 두경우 외에 조건의 참 거짓에 따라 반복문이 수행하는 경우
'JAVA' 카테고리의 다른 글
| 객체 지향 프로그래밍, 클래스 (1) | 2024.12.11 |
|---|---|
| continue문, break문 (0) | 2024.12.10 |
| 조건문 (2) | 2024.12.09 |
| 비트 연산자, 연산자 우선순위 (0) | 2024.12.09 |
| 연산자 (0) | 2024.12.06 |