본문 바로가기
Back-end/Java_T.I.L

4. 제어문_선택문(if, else-if, switch)

by 사장님나빠여 2021. 12. 31.

목표

자바가 제공하는 제어문을 학습하세요.

학습할 것 (필수)

선택문
반복문


# 선택문

조건문은 조건식과 실행될 하나의 문장 또는 블럭{}으로 구성

 Java에서 조건문(선택문)은 if문과 switch문 두 가지뿐이다

if문이 주로 사용되며, 경우의 수가 많은 경우 switch문을 사용할 것을 고려한다

모든 switch문은 if문으로 변경이 가능하지만, if문은 switch문으로 변경할 수 없는 경우가 많다.

if 문

-if문은 if, if-else, if-else if의 세 가지 형태가 있다.

-조건식의 결과는 반드시 true 또는 false이어야 한다.

if(조건식){
	//조건식이 참(true)일 때 수행될 문장들을 적는다.
}

-조건식의 예(example)

if i = 0;
if(i%2==0){ }
if(i%3==0){ }


String str = "";
char ch ='';

if(ch==' '|| ch=='\t'){ }
if(ch=='c'|| ch=='C'){ }
if(str=="c" || ch=="C"){ }
if(str.equals("c") || str.equals("C")){ }
if(str.equalsIgnoreCase("c")) { }
if(ch>='0' && ch <= '9') { }
if(!(ch>='0' && ch <= '9')) { }
if(ch<'0' || ch>'9') { }

if(('a'<=ch && ch<='z') || ('A'<=ch && ch<='Z')) { }

if(i<-1 || i>3 && i<5) { }

str = "3";
if(str!=null && !str.equals("")) {ch = str.charAt(0);}

boolean powerOn = false;
if(!powerOn) { {


중첩 if문

-if문 안에 또 다른 if문을 중첩해서 넣을 수 있다

-if문의 중첩 횟수에는 거의 제한이 없다

if(조건식1){
	//조건식1의 참(true)일 때 수행될 문장들을 적는다.
    if(조건식2){
    	//조건식1과 조건식2가 모두 true일 떄 수행될 문장들
    } else {
    	//조건식1이 true이고, 조건식2가 false일 때 수행되는 문장들
    }
} else{
	//조건식1이 false일 때 수행되는 문장들
}

if-else 문

if문의 변형인 if-else문의 구조는 다음과 같다

if(조건식){
	//조건식이 참(true)일 때 수행될 문장들을 적는다.
} else{
	//조건식이 거짓(false)일 때 수행될 문장을 적는다.
}

'else'의 뜻이 '그 밖의 다른'이므로 조건식의 결과가 참이 아닐 때, 즉 거짓일 때 else블럭의 문장을 수행하라는 뜻이다.

조건식의 결과에 따라 이 두 개의 블럭{ } 중 어느 한 블럭{ }의 내용이 수행되고 전체 if문을 벗어나게 된다.

if-else if 문 

if -else문은 두 가지 경우 중 하나가 수행되는 구조인데, 처리해야 할 경우의 수가 셋 이상인 경우에는 if- else if문을 사용한다/첫 번째 조건식부터 순서대로 평가해서 결과가 참인 조건식을 ㅁ나나면, 해당 블럭{ }만 수행하고 'if-else if'문 전체를 벗어난다.만일 결과가 참인 조건식이 하나도 없으면, 마지막에 있는 else블럭의 문장들이 수행된다.(else블럭은 생략 가능)else블럭이 생략되었을 때는 if-else if문의 어떤 블럭도 수행되지 않을 수 있다.

if(조건식1){
	//조건식1의 연산결과가 참(true)일 때 수행될 문장들을 적는다.
} else if (조건식2){
	//조건식2의 연산결과가 참(true)일 때 수행될 문장들을 적는다.
} else if (조건식3){  //여러개의 else if를 사용할 수 있다.
	//조건식3의 연산결과가 참(true)일 때 수행될 문장들을 적는다.
} else{ //마지막은 보통 else블럭으로 끝나며, else블럭은 생략가능하다.
	//위의 어느 조건식도 만족하지 않을 때 수행될 문장들을 적는다.
}

 

switch 문

if문은 조건식의 결과가 참과 거짓, 두 가지밖에 없기 때문에 경우의 수가 많아질수록 else-if를 계속 추가해야 하무로 조건식이 많아져서 복잡해지고, 여러 개의 조건식을 계산해야 하므로 시간이 많이 걸린다.

그래서 처리할 경우의 수가 많은 경우에는 if문 보다 switch문으로 작성하는 것이 좋다. 다만 switch문은 제약조건이 있기 때문에, 경우의 수가 많아도 어쩔 수 없이 if문으로 작성해야 하는 경우가 많다

 

switch문의 제약조건1. switch문의 조건식 결과는 정수 또는 문자열이어야 한다2. case문의 값은 정수 상수(문자 포함), 문자열만 가능하며, 중복되지 않아야 한다.

 

switch (조건식) {
	case 값1 : 
    	//조건식의 결과가 값1과 같을 경우 수행될 문장장들
        // ......
        break;
    case 값2 : 
    	//조건식의 결과가 값2와 같을 경우 수행될 문장장들
        // ......
        break;
    default : 
    	//조건식의 결과와 일치하는 case문이 없을 때 수행될 문장들

1. 조건식을 계산한다

2. 조건식의 결과와 일치하는 case문으로 이동한다

3. 이후의 문장들을 수행한다

4. break문이나 switch문의 끝을 만나면 switch문 전체를 빠져나간다

 

break문

break문은 자신이 포함 된 가장 가까운 반복문을 벗어난다.

주로 if문과 함께 사용되어 특정 조건을 만족할 때 반복문을 벗어나게 한다.

특히, 무한 반복문에는 조건문과 break문이 항상 같이 사용된다. 

그렇지 않으면 무한히 반복되기 때문에 프로그램이 종료되지 않을 것이다.

 

continue문continue문은 반복문 내에서만 사용될 수 있으며, 반복이 진행되는 도중에 continue문을 만나면 반복문의 끝으로 이동하여 다음 반복으로 넘어간다.for문의 경우 증감식으로 이동하며, while문과 do-while문의 경우 조건식으로 이동한다.

 

continue문은 반복문 전체를 벗어나지 않고 다음 반복을 계속 수행한다는 점이 break문과 다르다.주로 if문과 함께 사용되어 특정 조건을 만족하는 경우에 continue문 이후의 문장을 수행하지 않고다음 반복으로 넘어가서 계속 진행하도록 한다.

 

 

댓글