본문 바로가기
👨‍💻 프로그래밍/📦 Backend

자바 9 - switch문

by 개발자 진개미 2021. 4. 18.
반응형

switch문은 if-else문과 비슷하게, 특정한 조건에 따라 코드를 실행하지만, 그 경우가 많을 때 쓰기 위해 고안되었다. 예를 들어, 특정 날짜에 따라 코드를 실행하는 프로그램이 있다면, 만약에 이를 if-else문으로 쓴다면 너무 길고 복잡할 것이다. 하지만 switch문을 사용하면 훨씬 더 간결하게 할 수 있다.

 

1. switch문의 사용법

2. switch문 사용 예시

 


1. switch문의 사용법

기본적으로 switch문은 변수를 전해주는걸로 시작하고, 그 안에 각각의 케이스들을 나열한다. 이 케이스 중 하나가 맞으면 케이스 안에 있는 코드와, 그 후의 코드가 모두 실행된다. 

int var = 3;

switch(var) {
	case 0:
    	System.out.println("0");
    case 1:
    	System.out.println("1");
    case 2:
    	System.out.println("2");
    case 3:
    	System.out.println("3");
    case 4:
    	System.out.println("4");
    case 5:
    	System.out.println("5");
}

위의 코드는 switch문에 들어가서 case 3에서 걸린다. 즉, 3이 출력된다. 하지만 거기서 끝나지 않고, case 3 이후의 모든 코드가 실행돼서 결과는 다음과 같다.

 

3

4

5

 

3에서 멈추게 할려면 어떻게 해야 할까? 정답은 break를 쓰는 것이다. 코드에 break를 쓰면 case에 걸렸을 때 안의 코드를 출력하고 더 이상 나머지 코드를 출력하지 않는다.

int var = 3;

switch(var) {
    case 0:
    	System.out.println("0");
        break;
    case 1:
    	System.out.println("1");
        break;
    case 2:
    	System.out.println("2");
        break;
    case 3:
    	System.out.println("3");
        break;
    case 4:
    	System.out.println("4");
        break;
    case 5:
    	System.out.println("5");
        break;
}

위의 코드의 결과는 3이된다.

 

그런데 만약에 switch문에 어떤 case도 걸리지 않을 경우는 어떻게 할까? 그 경우는 case 자리에 default를 써 주면 된다. default는 모든 case에 걸리지 않았을 경우 자동으로 실행된다.

int var = 10;

switch(var) {
    case 0:
    	System.out.println("0");
        break;
    case 1:
    	System.out.println("1");
        break;
    case 2:
    	System.out.println("2");
        break;
    case 3:
    	System.out.println("3");
        break;
    case 4:
    	System.out.println("4");
        break;
    case 5:
    	System.out.println("5");
        break;
    default:
    	System.out.println("오류!");
}

위의 프로그램의 결과는 오류!이다.


2. switch문 사용 예시

오늘이 몇 월달인지에 따라 그 달이 출력되는 프로그램 작성

int month = 11;

switch(month) {
	case 1:
    	System.out.println("Jan");
        break;
    case 2:
    	System.out.println("Feb");
        break;
    case 3:
    	System.out.println("Mar");
        break;
    case 4:
    	System.out.println("Apr");
        break;
    case 5:
    	System.out.println("May");
        break;
    case 6:
    	System.out.println("Jun");
        break;
    case 7:
    	System.out.println("Jul");
        break;
    case 8:
    	System.out.println("Aug");
        break;
    case 9:
    	System.out.println("Sep");
        break;
    case 10:
    	System.out.println("Oct");
        break;
    case 11:
    	System.out.println("Nov");
        break;
    case 12:
    	System.out.println("Dec");
        break;
}

반응형