Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

자바 switch 문 완벽 가이드: 사용법과 실전 예제

조건문은 모든 프로그래밍 언어에서 공통으로 사용되는 핵심 기능입니다. 개발자는 조건문을 통해 프로그램의 실행 흐름을 제어할 수 있습니다. 자바에서는 if...else 문을 사용해 특정 조건에 따라 프로그램의 흐름을 제어합니다.

또한 자바는 switch 문이라는 기능을 제공합니다. switch 문은 하나의 표현식을 여러 case와 비교해 평가하며, 표현식이 특정 case와 일치하면 해당 case에 대응하는 코드 블록이 실행됩니다.

이번 글에서는 자바에서 switch 문을 사용하는 방법과 default, case, break 키워드의 활용법을 소개합니다. 아울러 이 키워드들을 실제 switch 문에서 사용하는 예제도 함께 살펴보겠습니다.

조건문 간단 복습

조건문은 특정 조건이 참(True)으로 평가될 때 코드를 실행하도록 프로그램에 지시하는 역할을 합니다. 예를 들어, 변수 name에 문자 'F'가 포함되어 있을 때만 특정 코드 블록을 실행하도록 만들 수 있습니다.

자바에서는 코드의 실행 흐름을 제어하기 위해 두 가지 조건문을 사용할 수 있습니다. 바로 if...else 문과 switch 문입니다.

if...else 문은 주어진 조건이 참일 경우 코드 블록을 실행합니다. 다음은 자바에서 if 문을 사용한 간단한 예입니다.

if (15 > 5) {
	System.out.println("15 is greater than 5.");
}

위 코드는 15 > 5라는 표현식을 평가합니다. 이 식은 참이므로 콘솔에 다음과 같이 출력됩니다.

15 is greater than 5.

또한 else 블록을 추가하면 모든 조건이 거짓일 때 실행할 코드를 지정할 수 있고, else...if 블록을 사용하면 앞선 조건이 거짓일 때 검사할 새로운 조건을 정의할 수 있습니다.

switch 문 역시 코드에서 조건 평가를 수행하는 데 활용할 수 있는 구문입니다.

자바 switch 문이란?

자바의 switch 문은 하나의 표현식을 하나 이상의 조건과 비교하여 평가하고, 참으로 평가된 조건에 해당하는 코드 블록을 실행하는 데 사용됩니다.

switch 문에는 case 문이 포함되며, case 문은 표현식을 비교할 조건들을 지정하는 역할을 합니다. 자바 switch 문의 기본 문법은 다음과 같습니다.

switch(expression) {
	case a:
		break;
	case b:
		break;
	case c:
		break;
	default:
		break;
}

동작 방식을 하나씩 살펴보겠습니다.

switch 문 안의 표현식은 딱 한 번 평가됩니다. 그다음, 그 값이 switch 문 위에서부터 아래로 각 case의 값과 순서대로 비교됩니다. 표현식이 어떤 case와 일치하면 해당 case에 연결된 코드 블록이 실행됩니다. 일치하지 않으면 다음 case 레이블로 넘어가 비교를 계속합니다.

만약 어떤 조건도 참으로 평가되지 않으면 default 문의 내용이 실행됩니다.

switch 문 실전 예제

switch 문이 실제로 어떻게 동작하는지 예제를 통해 확인해 보겠습니다. 월(month)의 숫자 값을 기반으로 해당 월의 이름을 알려주는 프로그램을 만든다고 가정해 봅시다. 단, 이 프로그램은 연중 처음 6개월(1월~6월)만 처리하도록 하겠습니다.

이 프로그램을 만들기 위해 자바의 time.LocalDate 메서드를 사용해 현재 월에 해당하는 숫자 값을 가져오겠습니다. 1은 1월, 2는 2월을 의미하는 식입니다.

먼저 현재 월의 숫자 값을 가져오는 코드를 작성해야 합니다. 다음 코드를 사용하면 해당 데이터를 조회할 수 있습니다.

LocalDate today = LocalDate.now();
int month = today.getMonthValue();
System.out.println(month);

위 코드는 현재 월을 나타내는 숫자 값을 반환합니다. 이 글을 작성한 시점이 2월이었기 때문에 결과는 2입니다.

이제 switch 문을 활용하면, 앞서 계산한 숫자 값에 따라 해당 월의 이름을 콘솔에 출력할 수 있습니다. 프로그램은 위에서 아래로 실행되며 일치하는 case를 찾고, 일치하는 case를 발견하면 break 문이 switch 문을 종료한 뒤 나머지 프로그램 실행을 이어갑니다.

캘린더 프로그램에 사용할 수 있는 코드는 다음과 같습니다.

LocalDate today = LocalDate.now();
int month = today.getMonthValue();

switch (month) {
	case 1:
		System.out.println("January");
		break;
	case 2:
		System.out.println("February");
		break;
	case 3:
		System.out.println("March");
		break;
	case 4:
		System.out.println("April");
		break;
	case 5:
		System.out.println("May");
		break;
	case 6:
		System.out.println("June");
		break;
}

이 코드를 실행하면 다음과 같은 결과가 출력됩니다. February

코드의 동작 과정을 살펴보겠습니다. 먼저 LocalDate 메서드를 사용해 현재 월을 나타내는 숫자 값을 가져옵니다. 그런 다음 여섯 개의 case를 가진 switch 문을 정의합니다.

프로그램은 각 case를 하나씩 차례대로 검사하며 참으로 평가되는 case를 찾습니다. 이 예제에서는 2월이므로 숫자 값이 2에 해당하고, 따라서 case 2 문이 참으로 평가됩니다. 이후 프로그램은 해당 월의 이름을 콘솔에 출력하고 break 문을 실행하여 더 이상 진행하지 않고 멈춥니다.

만약 5월이라면 month 값은 5가 되고, 콘솔에는 May가 출력될 것입니다.

break 키워드

앞선 코드에서 우리는 break 키워드를 사용했습니다. 자바가 break 문을 만나면 switch 블록 내부의 코드 실행을 중단하고, 그 시점부터 프로그램의 나머지 부분을 계속 실행합니다.

break 문은 이미 조건이 충족된 상태에서 불필요하게 다른 case를 검사하는 것을 방지하기 때문에 중요합니다. 올바른 case를 찾은 후에는 더 이상 다른 case를 평가할 필요가 없으므로 실행 시간도 절약됩니다. 따라서 모든 case 끝에는 break 문을 작성하는 것이 좋습니다.

앞서 작성한 코드에서 break 문이 사용된 부분은 다음과 같습니다.

…
	case 4:
		System.out.println("April");
		break;
…

만약 현재 월이 4월이라면 이 case가 실행된 후, break 문이 있기 때문에 프로그램은 switch 문을 빠져나가게 됩니다.

default 키워드

default 키워드는 어떤 case도 일치하지 않을 때 실행할 코드를 지정하는 데 사용됩니다. 앞선 예제에서 우리는 1월부터 6월 사이인 경우에만 월 이름을 반환하는 프로그램을 만들었습니다.

그렇다면 어떤 case도 참으로 평가되지 않았을 때 사용자에게 It's after June이라는 기본 메시지를 보여주려면 어떻게 해야 할까요? 바로 이럴 때 default 키워드가 필요합니다.

다음은 앞선 예제에 default 키워드를 적용하여, 어떤 case도 일치하지 않을 때 표시할 메시지를 지정한 예입니다.

case 4:
		System.out.println("April");
		break;
	case 5:
		System.out.println("May");
		break;
	case 6:
		System.out.println("June");
		break;
	default:
		System.out.println("It's after June!");
		break;
…

만약 현재 월이 7월이라면 어떤 case도 참으로 평가되지 않으므로 default 문의 내용이 실행됩니다. 그 결과 콘솔에는 It's after June!이라는 메시지가 출력됩니다.

참고: 최신 자바의 향상된 switch 표현식

자바 14부터는 화살표(->) 문법을 사용하는 향상된 switch 표현식(switch expression)이 정식 도입되었습니다. 이 문법을 사용하면 break 없이도 각 case가 자동으로 종료되며, switch가 값을 반환할 수 있어 코드를 더욱 간결하게 작성할 수 있습니다.

String monthName = switch (month) {
	case 1 -> "January";
	case 2 -> "February";
	case 3 -> "March";
	case 4 -> "April";
	case 5 -> "May";
	case 6 -> "June";
	default -> "It's after June!";
};
System.out.println(monthName);

다만 기존 방식의 switch 문은 여전히 널리 사용되고 있으므로, 두 가지 문법을 모두 이해해 두면 좋습니다.

마무리

자바의 switch 문은 하나의 표현식을 여러 case와 비교하여 평가하고, 일치하는 case가 있을 때 해당 코드를 실행하는 데 사용됩니다. switch 문은 프로그램의 흐름을 제어하는 조건문의 한 형태입니다.

이번 글에서는 자바에서 switch 문을 사용하는 방법을 살펴보고, case, break, default 키워드를 switch 문과 함께 활용하는 방법을 알아보았습니다. 또한 이러한 키워드들이 실제로 사용되는 switch 문 예제도 함께 다루었습니다.

이제 여러분도 전문가처럼 자바에서 switch 문을 활용할 준비가 되었습니다!