1. 언제 If문과 Switch문을 사용하는가?


1) 처리할 경우의 수가 많은 경우, If문보다 Switch문을 사용하는 것이 좋다.


2) 하지만 Switch문은 '제약조건'이 있기 때문에, 

    경우의 수가 많아도 If문으로 무조건 작성해야 하는 경우도 있다.


3) 때문에

Switch문을 If문으로는 모두 변경이 가능하지만, 

모든 If문을 Switch문으로는 변경할 수는 없다. 




2. Switch문의 제약조건


1) Switch문의 값은 정수 또는 문자(열)이어야 한다. 

   *JDK 1.7버전부터 문자열이 허용되었다.


2) case문의 값은 중복될 수 없다.

3) 변수 불가능

4) 상수 가능 

* 값 변경 불가능

* 대문자 표기

* 카멜 표기법 대신 _ 로 이어줌 


5) 문자 가능: 내부적으로 정수로 인식하기 때문

6) case문의 값과 switch문의 값 타입형은 같아야 한다. 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package switchex;
 
public class SwitchTest04 {
    public static void main(String[] args) {
 
//    switch-case문의 제약조건 알아보기 
        int num = 10;
        int result = 20;
        double d = 1.5;
        
//    final: 상수값, 값의 변경이 불가능
//    1) 대문자로 표기 2) 카멜 표기법 대신 _ 로 이어줌 
        final int MAX_NUM = 1;
        
//    case 타입은 switch의 값의 타입형과 일치해야 함
//    이때의 switch 값은 num으로 정수형 타입이다. 
        switch(num) {
        case 10
//    case result:           // 변수는 불가능 
        case 'A':                // 내부적으로 정수로 인식하기에 가능 
        case MAX_NUM:     // 상수 가능 
        }
        
        String str = "JAVA";
        
        switch(str) {
        case "YES":    
        }
    }
}
cs



3. switch문에서 break;를 사용하지 않는 경우


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package switchex;
 
import javax.swing.JOptionPane;
 
class Membership {
    static void grantDelete() {
        System.out.println("회원정보 삭제 권한");
    }
 
    static void grantWrite() {
        System.out.println("게시글 쓰기 권한");
    }
    
    static void grantRead() {
        System.out.println("게시글 읽기 권한");
    }
}
 
public class SwitchTest05 {
    public static void main(String[] args) {
 
        int level = Integer.parseInt(JOptionPane.showInputDialog("레벨 입력"));
        
//    break를 쓰지 않는 경우
        switch(level) {
        case 1:
            Membership.grantDelete();
        
        case 2:
            Membership.grantWrite();
            
        case 3:
            Membership.grantRead();
        }
        
    }
}
cs




4. 조건문의 중첩


if문 3회 / for문 2회까지 사용가능하다. 

그 이상은 접근 방식을 바꾸는 것이 좋다.