본문 바로가기

java 공부/코딩은 처음이라 with 자바

#자바_8.switch문_제어문

switch문은 if문을 용도에 맞게 변형한 형태라고 한다.

좀 더 깔끔하게 만들 수 있다고,,,

 

 

아래는 switch문의 기본 문법이다.

        switch(변수) {
            case 조건1:
                //실행문
            case 조건2:
                //실행문
            case 조건3:
                //실행문
                break;
            default:
                //조건에 해당하지 않을 때 실행 
        }

지금까지 봤던 제어문들은 중첩이 가능했지만 swich문은 중첩을 사용하지 않는다.

 

 

예제를 확인해보자.

 public static void main(String[] args) {
        String[] planets = {
            "수성", "금성", "지구", "화성", "목성", "토성"
        };

        for (String planet : planets) {
            switch (planet) {
                case "지구":
                    System.out.println(planet + "로 우주 여행 가자");
                    break;
                default:
                    System.out.println(planet + "으로 우주 여행 가자");
                    break;
            }
        }

    }

switch문은 이렇게 데이터를 조건별로 처리하고 싶을 때 유용하다.

 

지구는 조사 "~로" 가 맞고, 나머지 행성은 "~으로"가 적절하기 때문에, 지구만 case를 따로 빼서 출력하였다.

각 조건의 마지막에는 break를 반드시 붙여야 하며, default 조건에는 break를 붙이든 안붙이든 상관이 없다.

 

 

switch문 변형

 

      for (String planet : planets) {
            switch (planet) {
                case "수성": //fall-through
                case "금성": //fall-through
                case "화성": //fall-through
                case "목성": //fall-through
                case "토성": //fall-through
                    System.out.println(planet + "으로 우주 여행 가자");
                    break;
                case "지구":
                    System.out.println(planet + "로 우주 여행 가자");;
            }
        }

 

위의 배열을 이용하여 같은 결과가 나오지만 switch문을 변형해보았다.

각 case문의 주석으로 "fall-through" 를 적은 것은 break문을 의도적으로 뺀 것이 맞다고 알려주는 일종의 약속이다.

 

만약 지금 예제처럼 switch문에 들어가는 모든 데이터를 알 수 있다면

누락이 되었는지 바로 확인이 가능하기 때문에 변형 코드가 더 좋은 코드로 볼 수 있다.

그러나 외부에서 데이터를 받아오는 상황이라면 기존의 switch문을 사용하는 것이 좋겠다.

'java 공부 > 코딩은 처음이라 with 자바' 카테고리의 다른 글

#자바_9.배열  (0) 2024.08.20
#자바_7.while문_제어문  (0) 2024.03.09
#자바_6.if문_제어문  (0) 2024.03.08
#자바_5.for문_제어문  (0) 2024.03.08
#자바_4. 배열_자바 언어 기본  (0) 2024.03.08