본문 바로가기

하고 싶은 거 하는 개발/Java 프로그래밍 기초

[JAVA] 자바(JAVA) 조건문에 대하여(switch 문)

728x90

 

지난 포스팅에 이어 조건문에 대해 계속 알아보겠습니다.

 

2021/01/21 - [하고 싶은 거 하는 개발/Java 프로그래밍 기초] - [JAVA] 자바(JAVA) 조건문에 대하여(if 문)

 

 

조건문(switch 문)

 

switch 문은 if 문과 서로 대체 가능한 관계입니다. switch 문의 용법은 아래 그림과 같습니다. 

 

 

switch 뒤의 괄호에 들어가는 조건이 중괄호 아래에 있는 각각의 case에 일치하게 되면 해당 케이스의 동작을 실행합니다. 

글로만 보면 잘 이해가 안 될 수 있으니 예시와 함께 알아보겠습니다.

 

		switch (1) {
		case 1 : System.out.println("case 1");
				break;
				
		case 2 : System.out.println("case 2");
				break;
		default : System.out.println("default");
				break;
		}

 

switch 뒤의 괄호에 숫자 1을 넣었습니다.

해당 코드가 실행되면 1을 찾아 아래로 내려가게 되고 가장 첫 번째 케이스가 1이기 때문에 'case 1'을 출력하게 됩니다. 

 

그 후 break를 만나게 되고 switch 문을 중지합니다.

 

switch 뒤의 괄호에 2를 넣으면 어떤 결과가 출력될까요?

		switch (2) {
		case 1 : System.out.println("case 1");
				break;
				
		case 2 : System.out.println("case 2");
				break;
		default : System.out.println("default");
				break;
		}

 

해당 코드가 실행되면 2를 찾아 아래로 내려가게 되고 두 번째 케이스가 2이기 때문에 'case 2'가 출력됩니다.

 

 

그렇다면 3이나 char 형 'a'를 switch 뒤의 괄호에 넣게 되면 어떻게 될까요?

		switch (3) {
		case 1 : System.out.println("case 1");
				break;
				
		case 2 : System.out.println("case 2");
				break;
		default : System.out.println("default");
				break;
		}

 

 

		switch ('a') {
		case 1 : System.out.println("case 1");
				break;
				
		case 2 : System.out.println("case 2");
				break;
		default : System.out.println("default");
				break;
		}

 

 

위에서 보시다시피 'default'가 출력되었습니다. 

3과 'a'는 케이스로 작성되지 않았기 때문에, 즉 주어진 케이스가 없는 경우에 default에 작성한 로직을 실행하게 됩니다. 

 

여기까지 보셨으면 switch 문이 if 문과 유사하게 동작한다는 것을 아실 수 있을 겁니다. 

 

위에 작성한 switch 문을 if 문으로 대체하면 아래와 같은 코드가 됩니다. 

 

		int 조건 = 1;
        
		if( 조건 == 1) {
			System.out.println("case 1");
		} else if ( 조건 == 2 ) {
			System.out.println("case 2");
		} else {
			System.out.println("default");
		}
	}

 

결과는 아래와 같습니다.

 

 

if 문의 else는 생략이 가능하다고 했습니다. 

switch 문도 마찬가지로 default를 생략할 수 있습니다. 

 

		switch ('a') {
		case 1 : System.out.println("case 1");
				break;
				
		case 2 : System.out.println("case 2");
				break;
		}

 

default를 생략하여 switch 문을 작성했습니다. 

 

 

결과로 아무것도 출력되지 않았습니다. 

'a'를 작성한 케이스가 없고, default도 작성되지 않았기 때문에 switch 문은 그대로 종료되었습니다. 

 

이제 switch 문을 거의 다 익히셨습니다.

남은 것은 switch 문에 작성된 break의 용도입니다. 

 

break를 주석 처리한 후 코드를 실행해보겠습니다.

 

		switch (1) {
		case 1 : System.out.println("case 1");
				//break;
				
		case 2 : System.out.println("case 2");
				//break;
		default : System.out.println("default");
				//break;
		}

 

결과는 어떨까요?

 

 

보시는 것과 같이 'case 1', 'case 2', 'default'가 전부 출력되었습니다.

 

break는 switch 문의 실행을 중지시키는 역할을 합니다. 

case 1에서 원하는 조건을 만족해 'case 1'을 출력한 후 중지하는 명령어가 없기 때문에 그 후의 조건에 상관없이

모든 로직을 실행한 것입니다. 

 

		switch (2) {
		case 1 : System.out.println("case 1");
				//break;
				
		case 2 : System.out.println("case 2");
				//break;
		default : System.out.println("default");
				//break;
		}

 

switch 뒤의 괄호에 1 대신 2를 입력한 결과 또한 case 2부터 모든 로직을 실행합니다.

 

 

따라서 'case 2'와 'default'가 출력되었습니다. 

 

이로써 switch 문에 대해서 익히셨습니다.

 

if 문과 switch 문부터는 이제 헷갈리실 수도 있습니다.

헷갈리시는 부분을 댓글로 남겨주시면 답변해드리겠습니다.

반응형