[JAVA] switch문
1. switch문
처리해야하는 경우의 수가 많을 때 사용한다.
if는 true 나 false 둘 중 하나밖에 결과값이 없다. 그리고 여러 조건식을 계속 계산해야한다.
그러나 switch문으로는 하나의 조건식으로 여러 가지 경우를 계산할 수 있다. 다만 switch문은 제약조건이 있어서 어쩔 수 없이 if문을 사용해야되는 경우가 있다.
작동 순서
1. 조건식을 계산한다.
2. 조건식의 결과와 일치하는 case문으로 이동
3. 이후의 문장들을 수행
4. break 문이나 switch문의 끝을 만나면 switch 문 전체를 빠져나간다.
조건식의 결과와 일치하는 case문이 하나도 없으면 default문으로 이동한다. default 는 생략 가능하다.
만일 break문을 안쓰면 계속 이후 case로 쭉 내려가 끝까지 모든 문장들을 수행한다.
break문을 고의로 생략하는 경우도 있다.
회원제로 운영되는 웹사이트의 경우
switch(level) {
case 3:
grantDelete(); //삭제권한을 준다
case 2:
grantWrite(); //쓰기권한을 준다
case 1:
grantRead(); //읽기권한을 준다
}
고객 level에 따라 권한을 switch문으로 설정했다.
3 레벨은 삭제, 쓰기, 읽기 모두 가능/2레벨은 쓰기, 읽기 가능/1레벨은 읽기 가능하게 일부러 break를 주지 않았다.
2. switch문의 제약조건
-if문의 조건식과 달리, 조건식의 계산결과가 int범위 이하의 정수만 가능
이 값과 일치하는 case문으로 이동하기 때문에 case문의 값 역시 정수이어야한다.
-중복되면 안된다.
-case문의 값은 반드시 상수여야한다. 변수, 실수, 문자열은 case문의 값으로 사용 불가
->
1. switch문의 조건식 결과는 정수 또는 문자열이어야한다.
2. case문의 값은 정수 상수만 가능하며, 중복되지 않아야한다.