본문 바로가기
Java

[Java] 제어문1_조건문(switch); if문과는 비슷하지만 다른 switch문

by 나는 개발자 2020. 12. 24.
TIL: 스스로 이해한 것을 바탕으로 정리하였기에 오류가 있을 수 있습니다. 틀린 부분은 댓글로 알려주시면 감사하겠습니다.

 

switch문

switch조건식 안의 동등 비교대상자와 case뒤에 기술된 값과 비교했을 때 일치할 경우 코드 실행 

동등 비교와 같이 확실한 값의 조건을 기술할 수 있다. 

 * Swich문과 if문과의 차이점 
 - if문은(조건식) => 조건식도 복잡하게 기술 가능, 범위 제시 가능 
 - switch문 (조건식 x) => 확실한 값의 조건만 기술 ( 동등 비교같이 수행 )

 

 [표현식] 
 switch ( 동등비교할 대상자 ) { 
         case 값1: 실행코드1; break; 
         case 값2: 실행코드2; break; 
         case 값3: 실행코드3; break; 
          ... 
         default: 위의값들이다일치하지않을경우 실행할코드; 
     }

 

 switch문의 주의사항 : break; 를 만나야 switch블록을 빠져나갈 수 있음 (break 없을 시 다음 case로 넘어간다)

 

 

 

 

 

예시 1) 사용자가 입력한 숫자 1~3에 따라 빨간불 파란불 초록불 출력.

 

 

 

System.out.println ( " " ) ; 을 대신하여 String 변수에 해당 값을 선언해보기

 

이때 문제점이 발생하는데, default의 값은 해당 구문과 밑에 있는 입니다 구문이 함께 출력되게 된다.

 

 

그 이유는 break ;  return ; 등의 코드로 코드를 중단시켜주지 않았기 때문이다. 

 

default 값에 중단 코드만 넣어주면 간단하게 해결된다.

 

 

 

 

 

 

예시 2) 사용자가 선택한 과일의 가격을 출력하기.

가격이 잘나오는 것을 볼 수 있다.
default의 값도 정확!

만약 여기에 break ; 구문을 넣지 않았다면?

모든 과일이 복숭아의 가격으로 출력되는 것을 볼 수 있는데, 그 이유는 price라는 변수가 새로 선언되었기 때문이다.

 

 

 

 

 

break ; 없이도 사용 가능한 예시를 알아보자

 

예시 1) 한 사이트의 회원 등급을 보면 등급이 높아질수록 권한이 많아진다.

만약 3등급은 읽기, 글쓰기, 관리권한이 있고, 2등급은 글쓰기와 읽기, 1등급은 읽기 권한만 있다고 가정해보자.

3등급은 해당 코드의 권한과 그 아래 권한인 글쓰기와 읽기를 함께 출력하게 될 것이다.

2등급은 글쓰기와 읽기, 그리고 1등급 본인의 코드에 있는 읽기 권한만 출력될 것이다.

 

 

댓글