[Java] 자바 101 강의 #10 ( Switch문 사용하기 )

    Switch 조건문

    자바에서는 if 조건이외에도 Switch문을 사용하여 조건문을 만들 수 있습니다. 다만 if문보다 활용성이 떨어질 수 있는 것은 다양한 연산자를 사용하여 조건을 만드는 if와 달리, 오직 특정 값일 때에만 조건을 실행하는 제어문입니다. 그래서 switch문의 경우 개발하는데 평생 쓰지 않아도 전혀 코딩을 하는데 지장이 없지만, if문은 평생 사용하지 않으면 문제가 있는 것이죠. 그럼 switch 문은 언제 사용하며, 어떻게 써야 하는지 알아보도록 하겠습니다.

     

    [Java] 자바 101 강의 #10 ( Switch문 사용하기 )


    switch/case 문법

    switch(변수) {
        case 값1:
            // 실행문
            break;
        case 값2:
            // 실행문
            break;
        default:
        	// 실행문
    }

    Switch 문법은 if 조건보다 조금 더 복잡합니다. switch안에 들어갈 변수를 기준으로 case라는 조건문을 생성하고, 특정 값을 지정했을 때, 해당 값일 경우 break; 전까지 실행을 하게 됩니다. 

     

    성적등급(Grade)을 기준으로 성적을 출력하는 예시를 한번 보도록 하겠습니다.

     

    Switch문 예시

     

    public static void main(String args[]) {
        String grade = "B";
    
        switch(grade) {
            case "A":
                System.out.println("당신은 최상위권 학생입니다.");
                break;
            case "B":
                System.out.println("당신은 상위권 학생입니다.");
                System.out.println("조금만 더 노력하면 금방 최상위권 학생이 되실거에요.");
                break;
            case "C":
                System.out.println("당신은 중위권 학생입니다.");
                System.out.println("조금만 더 분발하셔야 될 것 같네요.");
                break;
            default:
                System.out.println("성적이 너무 형편이 없네요.");
        }
    }

    실행결과

    당신은 상위권 학생입니다.
    조금만 더 노력하면 금방 최상위권 학생이 되실거에요.

     

    위 예제를 보다시피 case와 다음 case 사이에는 break가 존재하며, 마지막인 else같은 존재는 default라는 조건문 다음에 작성을 하게 됩니다. 여기까지 보면 특별히 어려움없이 스위치를 사용할 수 있을지 모르겠으나, 한가지 정말 조심해야 될 부분이 있습니다.

     

     

    public static void main(String args[]) {
        String grade = "B";
    
        switch(grade) {
            case "A":
                System.out.println("당신은 최상위권 학생입니다.");
                break;
            case "B":
                System.out.println("당신은 상위권 학생입니다.");
                System.out.println("조금만 더 노력하면 금방 최상위권 학생이 되실거에요.");
            case "C":
                System.out.println("당신은 중위권 학생입니다.");
                System.out.println("조금만 더 분발하셔야 될 것 같네요.");
                break;
            default:
                System.out.println("성적이 너무 형편이 없네요.");
        }
    }

    위 예제는 case "B"와 case "C" 사이에 break;를 제거한 예제입니다. 이 코드를 실행하게 되면

     

    당신은 상위권 학생입니다.
    조금만 더 노력하면 금방 최상위권 학생이 되실거에요.
    당신은 중위권 학생입니다.
    조금만 더 분발하셔야 될 것 같네요.

     

    위와 같이, case "B" 내용과 case "C" 내용을 모두 실행하게 됩니다. 즉, break;가 없으면 다음 break를 만날 때까지 조건은 무시하고 내용을 실행하게 됩니다. 처음에는 실수하지 않지만, 나중에 조건이 많아지면 실수할 수 있는 부분이니 꼼꼼히 체크해보는 습관이 중요합니다.

     

    Switch 문 정리

    • Switch문은 IF와 100% 호환이 되지 않습니다. 하지만 IF는 스위치 내용을 호환 할 수 있습니다.
    • break를 작성하지 않으면, 다음 break가 있는 case까지 넘어갈 수 있습니다.
    • IF 조건에서 Else와 같은 것을 구할려면, default 조건을 작성합니다.
    • Switch 조건들은 값이 하나만 오게 되어 있으며, 다른 연산자는 사용하지 못하고 오로지 해당 값과 동일한가만 체크합니다.

     

    마지막으로 Switch문은 도대체 언제 사용을 하는가 궁금할 수 있는데 특정 문자열 값이 오는 것에 따라 프로그램이 분기가 되는 경우에 활용을 하는 경우가 많습니다. 예를 들어 자바를 실행할 때 arguments를 줄 수 있는데 이 arguments를 switch로 처리하여, 특정 프로그램을 실행하는 경우가 있을 수 있습니다.

    반응형

    댓글

    Designed by JB FACTORY