제어문이란?
- 제어문이란 기본적으로 위에서 아래로 처리되는 코드의 처리 순서를 변경하는 것
- 제어문은 선택 제어문(조건문)과 반복 제어문(반복문)으로 이루어져 있다.
선택 제어문(조건문)
선택 제어문은 if 문과 switch문으로 구성
if 문
- 조건식에 따라 실행문의 실행 여부를 결정한다.
- 기본적인 문법 구조는 크게 if 문, if - else 문, if - else if - else문 으로 나뉜다.
- if 문 : 조건식이 true일 경우 해당 블록 실행
- if - else 문 : if 문의 조건식이 false일 경우 해당 블록 실행
- if - else if - else 문 : 여러 개의 조건식을 비교할 수 있으며, 순차적으로 조건식을 비교하여 처음 true가 되는 블록 하나만 실행한다.
// if 문
if (조건식) {
// 조건식이 true일 경우 실행되는 블록
}
// if - else 문
if (조건식) {
// 조건식이 true일 경우 실행되는 블록
} else {
// 조건식이 false일 경우 실행되는 블록
}
// if - else if - else 문
if (조건식1) {
// 조건식1이 true일 경우 실행되는 블록
} else if (조건식2) {
// 조건식1이 false이면서 조건식2가 true일 경우 실행되는 블록
} else {
// 위의 조건식1과 조건식2가 모두 false일 경우 실행되는 블록
}
switch 문
- switch 문은 점프 위치 변숫값에 따라 특정 위치로 이동해 구문을 실행하는 선택 제어문이다.
- 점프 위치 변수와 위칫값으로는 int, char타입과 String타입(Java7이상)의 변수가 올 수 있다.
- default는 점프 위치 변수와 동일한 값을 갖는 위칫값이 없을 때 실행하는 구문이며 생략 가능하다.(if 문의 else와 동일)
- break 선택 제어자를 생략할 경우 위치 변수와 동일한 위칫값으로 점프한 뒤 순차적으로 전부 실행한다.(이를 fall through라고 한다.)
switch(점프 위치 변수) {
case 위칫값1:
실행 구문;
break;
case 위칫값2:
실행 구문;
break;
...
default:
실행구문;
}
반복문
반복 제어문은 코드들이 반복적으로 실행되도록 할 때 사용한다.
반복문의 종류로는 for 문, while 문, do - while 문이 있다.
for 문
- for 문은 일반적으로 반복 횟수가 정해져 있을 때 사용
- for 문은 조건식을 충족하는 동안 초기화식부터 시작해서 증감식의 규칙을 따라 실행
(조건식 = true : 반복 / 조건식 = false : 반복 종료) - 초기식과 조건식 증감식으로 이루어져 있으며, 컴파일러는 문법적으로 for 문의 소괄호 안에 세미콜론(;)이 2개 있는지 여부만 점검
- 초기식 : for 문이 시작될 때 최초 한 번만 수행 / 사용할 변수의 초깃값 설정
- 조건식 : 조건식의 결과가 true인 동안 실행 구문 반복 / for 문의 끝나는 위치
- 증감식 : 초기식에서 설정한 변수값의 증감(반복횟수)을 설정 / for 문의 실행 구문이 종료가 되면 실행
- 조건식을 충족하는 동안 초기화식부터 시작해서 증감식의 규칙을 따라 실행
for(초기식; 조건식; 증감식) {
// 조건식이 true일 경우 반복 실행
}
// "안녕하세요" 10번 출력
for(int i = 0; i < 10; i++){
// 사용할 변수 i를 0으로 초기화, i가 10보다 작을 경우 반복, 실행문이 끝나면 i += 1(i++)
System.out.println("안녕하세요");
}
while 문
- while문은 일반적으로 반복 횟수가 정해져 있지 않을 때 사용
- 조건식에는 참 또는 거짓으로 검사하기 때문에 true를 넣어 무한 반복 가능 (실행 구문에 제어 키워드 필요)
(초기식);
while(조건식){
실행구문; // 조건식이 true인 동안 실행
증감식;
}
// "안녕하세요" 10번 출력
int i = 0;
while(i < 10){
System.out.println("안녕하세요");
i++;
}
do - while 문
- do - while 문은 while 문과 거의 동일하며 실행 순서에 차이가 있다.
- while 문 : 조건식 비교 -> false일 경우 -> 실행하지 않고 종료 (최소 0회 실행)
- do - while 문 : 실행 -> 조건식 -> false일 경우 -> 종료 (최소 1회 실행)
- 즉, do - while문은 일단 실행부터 시키고 나서 조건식을 비교한다.
초기식;
do {
// 실행 구문;
} while(조건식);
// "안녕하세요" 1회 출력
int i = 0;
do {
System.out.println("안녕하세요");
i ++;
} while(i < 0)
/*
i = 0이고 while 조건식은 i가 0보다 작을 때 반복이다. (false)
하지만 do - while 문은 일단 실행부터 시키고 조건식을 비교하기 때문에
1회는 실행을 시켜 블록 내의 실행 구문이 종료되고 while문을 비교하여 조건식이 false -> 종료
따라서 "안녕하세요"가 최소 1회는 출력되는 것이다.
*/
제어 키워드
break 제어 키워드
- break는 반복문을 실행 중지하는 역할을 한다.
- if 문을 제외한 가장 가까운 중괄호({})를 탈출하는 제어 키워드
! 다중 반복문에서도 전체를 반복 중지하는 것이 아닌 break를 기준으로 가장 가까운 중괄호에 대한 반복문을 실행 중지하는 것 - 즉, 특정 조건에 이르면 더이상 반복하지 않아도 될 때 if문과 break를 사용하여 반복문을 탈출할 수 있다.
int i = 0; // 초기식
while(true) { // 조건을 true로 하여 무한 반복
if (i > 10) {break; } // i가 10보다 크다면 break로 무한 반복 중지
i ++;
}
break + Label
- 다중 반복문에서 반복문 전체 반복 중지할 때 사용
- break 제어 키워드만 사용하면 가장 가까운 중괄호에 대한 반복문만 실행 중지를 시킨다.
- 상황에 따라 다중 반목문에서 조건에 따라 반복문을 일괄 실행 중지(탈출)해야 할 때가 있는데 이 때는 break + label 문법을 사용할 수 있다.
label명: // 콜론 필수, 콜론은 이동할 위치를 의미
for(int i = 0; i < 100000; i++){ // 반복문 1
for(int j = 0; j < 100000; j++){ // 반복문 2
if (j > 10) {
break label명; // 반복문 2를 반복 중지하는 것이 아닌 lable을 지정한 반복문을 탈출
}
}
}
continue 제어 키워드
- continue는 반복 제어문의 닫힌 중괄호(}) 역할을 한다.
- 특정한 조건에서 반복문이 아닌 실행 구문이 실행되는 것을 원하지 않을 때 사용
// 0부터 10까지 홀수만 출력하는 반복문
for(int i = 0; i < 10; i++){
System.out.println("i : " + i); // 출력 : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
if(i % 2 == 0){
continue; // 위의 조건문이 true일 때 즉 홀수일 때 반복문을 점프함(다음 반복으로 이동)
}
System.out.println("홀수 : " + i); // 출력 : 1, 3, 5, 7, 9
}
continue + Lable
- continue 제어 키워드에도 lable을 사용할 수 있으며, 설정한 위치까지 반복문을 이동(점프)할 수 있다.
- 개인적인 생각으로 continue + Lable과 break 제어 키워드 하나만 사용하는 것과 다른 것이 없다고 생각함..
레이블명:
for (초기식; 조건식; 증감식) {
for (초기식; 조건식; 증감식) {
if (조건식) { //
continue 레이블명;
}
// 실행구문
}
}
'Langauge > Java-basic' 카테고리의 다른 글
[Java] 클래스와 객체 (0) | 2022.07.13 |
---|---|
[Java] 배열 (0) | 2022.07.11 |
[Java] 연산자 (0) | 2022.07.07 |
[Java] 자료형(Type) (0) | 2022.07.05 |
[Java] 리터럴 (Literal) (0) | 2022.07.05 |