반복문은 어떤 작업(코드들)이 반복적으로 실행되도록 할 때 사용되며, 반복문의 종류로는
for문, while문, do-while문
이 있다.
for문은 반복 횟수를 알고 있을 때 주로 사용하고, while문은 조건에 따라 반복할 때 주로 사용한다.
while문과 do-while문의 차이점은 조건을 먼저 검사하느냐 나중에 검사하느냐의 차이일 뿐 동작 방식은 동일하다.
for(int i=1; i<=10; i++){
System.out.println(i);
}
1
2
3
4
5
6
7
8
9
10
초기화식의 역할은 조건식과 실행문, 증감식에서 사용할 변수를 초기화하는 역할을 한다. 초기화식이 필요 없을 경우에는 초기화식을 생략할 수 있다.
int i=1;
for(; i<=100; i++){...}
어떤 경우에는 초기화식이 둘 이상이 있을 수도 있고, 증감식도 둘 이상이 있을 수 있다. 이런 경우에는 쉼표(,)
로 구분해서 작성하면 된다.
for(int i=0, j=100; i<=50 && j>=50; i++,j--){...}
초기화식에 선언된 변수는 for문 블록 내부에서 사용되는 로컬 변수이다. 따라서 for문을 벗어나게되면 사용할 수 없다.
for문이 정해진 횟수만큼 반복한다면, while문은 조건식이 true일 경우에 계속해서 반복한다. 조건식에는 비교 또는 논리 연산식이 주로 오는데, 조건식이 false가 되면 반복 행위를 멈추고 while문을 종료한다.
int i=1;
while(i<=10){
System.out.println(i);
i++;
}
1
2
3
4
5
6
7
8
9
10
조건식에는 boolean 변수나 true/false 값을 산출하는 어떠한 연산식이든 올 수 있다. 만약 조건식에 true를 사용하면 while(true)가 되어서 무한 루프를 돌게 된다. 무한 루프는 무한히 반복하여 실행되기 때문에 언젠가는 while문을 빠져나가기 위한 코드가 필요하다.
do-while문은 조건식에 의해 반복 실행한다는 점에서는 while문과 동일하다. while문은 시작할 때부터 조건식을 검사하여 블록 내부를 실행할지 결정하지만, 경우에 따라서는 블록 내부의 실행문을 우선 실행시키고 실행 결과에 따라서 반복 실행을 계속할지 결정하는 경우도 발생한다. 이때 do-while문을 사용할 수 있다.
작성 시 주의할 점은 while()뒤에 반드시
세미콜론(;)
을 붙여야 한다
int i=1;
do{
System.out.println(i);
i++;
}while(i<=10);
1
2
3
4
5
6
7
8
9
10
break문은 반복문인 for문, while문, do-while문을 실행 중지할 때 사용된다. 대개 if문과 같이 사용되어 if문의 조건식에 따라 for문과 while문을 종료할 때 사용한다.
while(true){
int num=(int)(Math.random()*6)+1;
System.out.println(num);
if(num==6){
break;
}
}
System.out.println("프로그램 종료");
1
5
6
프로그램 종료
만약 반복문이 중첩되어 있을 경우 break문은 가장 가까운 반복문만 종료하고 바깥쪽 반복문은 종료시키지 않는다. 중첩된 반복문에서 바깥쪽 반복문까지 종료시키려면 바깥쪽 반복문에 이름(라벨)을 붙이고,
break 이름;
을 사용하면 된다
Outter:for(char upper='A'; upper<='Z'; upper++){
for(char lower='a'; lower<='z'; lower++){
System.out.println(upper+"-"+lower);
if(lower=='g'){
break Outter;
}
}
}
System.out.println("프로그램 실행 종료");
A-a
A-b
A-c
A-d
A-e
A-f
A-g
프로그램 실행 종료
continue문은 반복문인 for문, while문, do-while문에서만 사용되는데, 블록 내부에서 continue문이 실행되면 for문의 증감식 또는 while문, do-while문의 조건식으로 이동한다.
continue문은 반복문을 종료하지 않고 계속 반복을 수행한다는 점이 break문과 다르다. continue문도 대개 if문과 같이 사용되는데, 특정 조건을 만족하는 경우에 continue문을 실행해서 그 이후의 문장을 실행하지 않고 다음 반복으로 넘어간다.
for(int i=1; i<=10; i++){
if(i%2 !=0){
continue;
}
System.out.println(i);
}
2
4
6
8
10