[Java] Switch문 사용하기

    스위치(Switch)문은 If ~ else if ~ else 문과 다르게 잘 활용되지 않는 제어문이다. 범용적으로 활용되는 if문과 다르게 switch문은 유사한 값에 대한 대처인 경우가 많다. 필자의 경우, 프로젝트를 하나 만들 때 Switch문을 아예 안쓰는 경우도 허다하기 때문에 switch 문을 사용하는 방식이 헷갈릴 때가 있을 정도이다. 물론 사람마다 switch문을 선호하여 쓸지 모르겠지만...

     

     

    switch문 구조

    switch(입력변수) {
        case 입력값1: 
             ...
             break;
        case 입력값2: 
        	 ...
             break;
        case 입력값3:
             ...
             break;
        default: 
        	 ...
             break;
    }

    Switch문은 일단 위와 같은 구조로 if와 달리 조건을 입력하는 곳이 단순하다. 

     

    switch문 예제

    package com.tistory.needjarvis;
    
    public class Main {
    
        public static void main(String[] args) {
            String inputVal = "A";
    
    	    switch(inputVal) {
                case "A":
                    a();
                    break;
                case "B":
                    b();
                case "C":
                    c();
                    break;
                default:
                    a();
                    b();
                    c();
                    break;
            }
        }
    
        public static void a() {
            System.out.println("A 입니다.");
        }
    
        public static void b() {
            System.out.println("B 입니다.");
        }
    
        public static void c() {
            System.out.println("C 입니다.");
        }
    }

     

    위 예제를 입력한 후, inputVal에 있는 값을 A, B, C 각각 입력하여 결과를 확인해보자.

     

    A를 입력할 경우

    A 입니다.

     

    예상을 했겠지만, A 입니다.라는 결과가 나온다. 즉 Switch문은 입력 변수와 같은 case를 찾아서 해당 내용을 실행한다. 이때 실행은 break; 까지이다.

     

    B를 입력할 경우

    B 입니다.
    C 입니다.

    B 입니다만 나오는 걸 기대한 분들은 바로 위에 적은 break;까지라는 것을 인지하지 못한 분들이다. case B에는 break가 없기 때문에 C 케이스까지 침범하여 실행을 한다. switch문은 break; 써야 되는 구문에 깜빡하여 쓰지 못하는 실수가 있을 경우 예기치 못한 에러가 발생하기에 모든 조건을 철저하게 테스트 해야 한다. 그렇기에 필자는 잘 선호하지 않는 방식이다. 

     

    C를 입력할 경우

    C 입니다.

    C를 입력하는 것은 A와 동일하게 C만 실행된다. C에는 B와 다르게 break가 있기 때문이다.

     

    다른 값을 입력했을 경우(ex: D)

    A 입니다.
    B 입니다.
    C 입니다.

    IF문의 else와 같이 다른 값을 입력했을 경우, default로 빠지게 된다. default를 입력하지 않는 경우 없는 조건 값을 입력하였을 때, 아무것도 실행하지 않고 끝이난다.

     

    위와 같이, switch문은 IF문과 다르게 다양하게 쓰이기 어렵고, switch문으로 처리를 해야 되는 것은 당연히 IF문으로 되기 때문에 평생 쓰지 않아도 개발하는데 아무런 지장이 없다. 다만 위와 같이 break;를 활용한 것을 이용해서 아래에 있는 case 조건들을 실행하는 것을 만드는 경우에는 IF조건보다 깔끔하게 끝낼수도 있겠다.

     

    반응형

    댓글

    Designed by JB FACTORY