Post

Java switch/case 문

1. switch/case 문 이란

switch/case 문은 if 문과 비슷하지만 좀 더 정형화된 모습의 제어문이다.

  • switch/case 문의 구조
1
2
3
4
5
6
7
8
9
switch(입력변수) {
    case 입력값1: ...
         break;
    case 입력값2: ...
         break;
    ...
    default: ...
         break;
}

입력변수의 값과 일치하는 case 입력값(입력값1, 입력값2, …)이 있다면 해당 case 문 하위의 문장이 실행된다.

case 문마다 break 라는 문장이 있는데 해당 case 문을 실행한 뒤 switch 문을 빠져나가기 위한 것이다. 만약 break 문이 빠져 있다면 그다음의 case 문이 실행되게 된다.

입력값이 정형화되어 있는 경우 if 문보다는 switch/case 문을 쓰는 것이 가독성에서 좀 더 유리하다. switch/case 문은 if else 구조로 변경이 가능하지만 if else 구조로 작성된 모든 코드를 switch 문으로 변경할 수는 없다.

2. 성능

if/else 문과 switch/case 문은 성능과 메모리 사용의 문제이다. 성능이 중요한 경우에는 switch/case 문을, 메모리 사용이 중요한 경우에는 if/else 문을 사용하면 좋다.

switch/case 문에서 case의 값은 순차적으로 감소 혹은 증가하는 것이 메모리 관리면에서 좋다.

3. 사용

1) int switch/case 예

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
38
39
40
41
42
43
44
45
46
47
48
public class IntSwitchCaseExample {
    public static void main(String[] args) {
        int month = 8;
        String monthString = "";
        switch (month) {
            case 1:
                monthString = "January";
                break;
            case 2:
                monthString = "February";
                break;
            case 3:
                monthString = "March";
                break;
            case 4:
                monthString = "April";
                break;
            case 5:
                monthString = "May";
                break;
            case 6:
                monthString = "June";
                break;
            case 7:
                monthString = "July";
                break;
            case 8:
                monthString = "August";
                break;
            case 9:
                monthString = "September";
                break;
            case 10:
                monthString = "October";
                break;
            case 11:
                monthString = "November";
                break;
            case 12:
                monthString = "December";
                break;
            default:
                monthString = "Invalid month";
                break;
        }
        System.out.println(monthString);
    }
}

2) string switch/case 예

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
38
39
40
41
42
43
44
45
46
47
48
public class StringSwitchCaseExample {
    public static void main(String[] args) {
        String val = "i";
        String monthString = "";
        switch (val) {
            case "a":
                monthString = "January";
                break;
            case "b":
                monthString = "February";
                break;
            case "c":
                monthString = "March";
                break;
            case "d":
                monthString = "April";
                break;
            case "e":
                monthString = "May";
                break;
            case "f":
                monthString = "June";
                break;
            case "g":
                monthString = "July";
                break;
            case "h":
                monthString = "August";
                break;
            case "i":
                monthString = "September";
                break;
            case "j":
                monthString = "October";
                break;
            case "k":
                monthString = "November";
                break;
            case "l":
                monthString = "December";
                break;
            default:
                monthString = "Invalid month";
                break;
        }
        System.out.println(monthString);
    }
}

[출처 및 참고]

This post is licensed under CC BY 4.0 by the author.