Lune Bleue 2019. 12. 13. 00:52

1. 조건문이란?

문장을 수행 할 때 조건에 따라 다른 문장이 수행되게 하도록 하는 문장으로, 이에 따라 수행 흐름이 바뀐다.

 

2. if(조건문){ 식}

2-1. if(조건문){ 식}else{식}

2-2. if(조건문){ 식} else if (조건문){ 식}else{식}

 

if문은 말 그대로 '만약 ~이라면' 라는 의미로 조건식의 결과 값이 true일 경우 실행 되는 문장이다.

if문은 단독으로 쓰일 수도있고, 여러 개의 if문이 중첩되서 사용 될 수도있다.

if문의 예시는 다음과 같다.

int a =1;

int b =2;

 

System.out.println(a+b)  ->3

 

if(a+b == 3){ -> 조건이 참이기에 아래의 식이 출력된다.

    System.out.println(b-a); ->1

    if(a ==1){ -> 위의 a+b == 3이 참이면서, 이쪽 역시 참이기에 실행된다.

          System.out.println(a); ->1

          }

    if(a ==2){ -> 위의 a+b == 3이 참이지만, 이쪽은 거짓이기에 실행되지 않는다.

          System.out.println(b); 

          }

}

 

if(a+b == 4){ -> 이 조건은 거짓이기에 출력되지 않는다.

     System.out.println(b*a) ;

     if(a ==1){ -> 위의 if문이 거짓이기에 이쪽은 건너뛰게 된다.

          System.out.println(a); 

          }

 

 

다만 전부 if문으로 사용할 경우 반복해서 돌때마다 if문을 모두 들여다 보게 된다. 이 경우 효율성이 줄어들며, 이를 보완하기 위해 if~else if ~else~ 문을 쓴다.

 

우선 if~ else 문의 경우는 if문의 조건절이 참일경우 if문의 식이, 아닐경우 else문의 식이 출력된다.

 

int a =1;

int b =2;

System.out.println(a+b)  ->3

if(a+b != 3){ -> 조건이 거짓이기에 아래의 식이 출력되지 않고 else로 넘어간다.

                    (조건문은 !=로 비교했기 때문에 a+b가 3이 아닐때가 true가된다.

    System.out.println(b-a); 

}

else{ -> 조건의 if조건문이 거짓이기에 아래의 식이 출력된다. 

     System.out.println(b*a) ; ->2

만약 조건문 앞에 !가 붙어있다면 거짓의 부정은 참이므로 if의 식이 출력되고. else는 건너뛰게 된다.

int a =1;

int b =2;

System.out.println(a+b)  ->3

if(!(a+b != 3)){ -> 식이 참이기에 if문이 출력된다. (조건식 앞에 !가 있기에 반대 가 된다. (false -> true))

    System.out.println(b-a); 

}

-> 위의 if조건문이 참이기에 이쪽은 읽지 않는다. 

else{ 

     System.out.println(b*a) ; 

 

else if 가 있으면 if 가 거짓일경우 그 다음 else if 의 조건을 확인하며, 조건이 참일 경우 그 else if 문의 식이 실행되고 if문을 빠져나가며, 모든 else if false일 경우, 마지막의 else 가 실행된다.

int a = ;

if(a >=90){

  System.out.println("a는 90이상입니다.");

}else if(a >=80){

  System.out.println("a는 80이상 90미만 입니다.");

}else if(a >=70){

  System.out.println("a는 70이상 80미만 입니다.");

}else if(a >=60){

  System.out.println("a는 60이상 70미만 입니다.");

}else {

  System.out.println("a는 60미만 입니다.");

}

 

a의 값이 어떤 값이냐에 따라서 수행되는 식이 달라지며, 수행이 되면, 그 아래 식은 건너뛰게 된다.

 

 

3.switch(식) case (예상 결과 값) 수행식 break;/return;

 

switch case 문은 switch의 조건의 값이 어떤 값이냐 에 따라서 발생하는 식을 다르게 수행한다.

switch의 결과물이 case에 주어진 조건과 일치하는 경우, 그 case문의 식이 실행된다. 

default가 있을 경우, switch문의 결과물이 case문의 예상 결과 값 이외의 값일 경우 수행된다.

 

int a = 6 ;

switch( a%5){

 case 0: System.out.println("a%5의 나머지는 0 입니다.");

         break;

 case 1: System.out.println("a%5의 나머지는 1 입니다."); -> 나머지가 1. case문의 조건이 1인 식이 실행된다.

        break;

 case 2: System.out.println("a%5의 나머지는 2 입니다.");

        break;

 default : System.out.println("a%5의 나머지는 4또는 5 입니다.");

        break;

}

 

위 switch case문은 a 를 5로 나눈 나머지가 몇이나에 따라서 들어가는 식이 달라지며, break; 가 실행되면 switch문을 나가게 된다.

만약 break;가 없으면 break; 문이 있는 곳까지 실행되고, break;문을 만나거나, 마지막 식이 실행되야 나가게 된다.

return;의 경우 호출한 곳으로 돌아간다. 

 

int a = 7;

switch( a%5){

 case 0: System.out.println("a%5의 나머지는 0 입니다.");

        break;

 case 1: System.out.println("a%5의 나머지는 1 입니다."); 

      break;

 case 2: System.out.println("a%5의 나머지는 2 입니다."); -> 나머지가 2 이니까 식이 실행

   

 default : System.out.println("a%5의 나머지는 4또는 5 입니다."); -> break;가 없어서 이 식도 실행된다.

                                                                                      case문의 마지막 식이기에 빠져나간다.                                             

}

 

switch문의 조건문의 결과물이 문자/ 문자열일 경우

case 문 역시 맞춰서 '문자' /"문자열" 로 조건을 줄 수 있다.

ex) case 'a' / case "abc"