본문 바로가기
JAVA(폐쇄)/학원 내용

자바(JAVA) 3일차 - switch문

by 진사담 2023. 3. 21.
728x90
반응형
switch문
switch 문은 if / else 문과 마찬가지로 주어진 조건 값의 결과에 따라 프로그램이 다른 명령을 수행하도록 하는 조건문이다.

이러한 switch 문은 if / else 문보다 가독성이 더 좋으며, 컴파일러가 최적화를 쉽게 할 수 있어 속도 또한 빠른 편
하지만 switch 문의 조건 값으로는 int형으로 승격할 수 있는(integer promotion) 값만이 사용될 수 있다.
 
즉, 자바에서는 swich 문의 조건 값으로 byte형, short형, char형, int형의 변수나 리터럴을 사용할 수 있습니다.
또한, 이러한 기본 타입에 해당하는 데이터를 객체로 포장해 주는 래퍼 클래스(Wrapper class) 중에서 위에 해당하는 Byte, Short, Character, Integer 클래스의 객체도 사용할 수 있습니다.
그리고 enum 키워드를 사용한 열거체(enumeration type)와 String 클래스의 객체도 사용할 수 있습니다.
따라서 switch 문은 if / else 문보다는 사용할 수 있는 상황이 적다.

 

switch의 특징
비교값과 조건값의 자료형은 반드시 일치해야한다.
중복되는 조건값을 가질수 없다.

@@ switch문의 비교값으로 사용가능한 자료형
1) 정수(byte, short, int)
2)문자형(char)
3)문자열(String)

※실수는 비교값으로 들어갈수 없다.

 

	기본형
	switch(비교값){ (비교값:정수, 실수, 문자형, 문자열), True, False
	case 조건값1 :
		비교값과 조건값1이 일치할 때 실행할 명령;
		break;
	case 조건값2 :
		비교값과 조건값2이 일치할 때 실행할 명령;
		break;
	case 조건값3:
		비교값과 조건값3이 일치할 때 실행할 명령;
		break;
	default: -> 필요없다면 생략 가능.
		비교값과 조건값이 일치하는게 없을 때 실행할 명령;
		break;
	}
예시
	int n = 5;
	switch (n) {
	case 1:
		System.out.println("1. 게임하기");
		break;// switch 문을 빠져나오는 키워드
	case 2:
		System.out.println("2. 게임소개");
		break;
	case 3:
		System.out.println("3. 종료");
		break;
	default:
		System.out.println("메뉴 선택이 올바르지 않습니다.");
		break;
	}

if문  vs switch문
if -> 범위를 가지고 비교를 할때 ex)성적 비교
switch -> 1:1 대응을 할떄 ex) 메뉴 선택
예제 1번
두개의 정수형 변수를 초기화 한다,(값은 자유)
그리고 산술 연산자를 담아줄 문자열 변수를 만든다.
switch문을 이용하여 정수의 연산을 수행하는 계산기 코드 작성하기
	int num1 = 10;
	int num2 = 7;
		
	String op = "+";
	switch(op) {
	case "+":
		System.out.println(num1+"+"+num2+"="+(num1+num2));
		break;
	case "-":
		System.out.println(num1+"-"+num2+"="+(num1-num2));
		break;
	case "*":
		System.out.println(num1+"*"+num2+"="+(num1*num2));
		break;
	case "/":
		System.out.println(num1+"/"+num2+"="+(num1/num2));
		break;
	case "%":
		System.out.println(num1+"%"+num2+"="+(num1%num2));
		break;
	}
예제 2번

 

정수형 변수를 하나 만들고, (1월,2월)을 대입한다.
해당 달이 몇일까지 있는지 switch문을 이용하여 작성하시오
	int month = 11;
		
	switch(month) {
	case 1:
		System.out.println(month+"월은 31일까지 있습니다.");
		break;
	case 2:
		System.out.println(month+"월은 28일까지 있습니다.");
		break;
	case 3:
		System.out.println(month+"월은 31일까지 있습니다.");
		break;
	case 4:
		System.out.println(month+"월은 30일까지 있습니다.");
		break;
	case 5:
		System.out.println(month+"월은 31일까지 있습니다.");
		break;
	case 6:
		System.out.println(month+"월은 30일까지 있습니다.");
		break;
	case 7:
		System.out.println(month+"월은 31일까지 있습니다.");
		break;
	case 8:
		System.out.println(month+"월은 31일까지 있습니다.");
		break;
	case 9:
		System.out.println(month+"월은 30일까지 있습니다.");
		break;
	case 10:
		System.out.println(month+"월은 31일까지 있습니다.");
		break;
	case 11:
		System.out.println(month+"월은 30일까지 있습니다.");
		break;
	case 12:
		System.out.println(month+"월은 31일까지 있습니다.");
		break;
}
2번 예제 응용
break;를 3개만 사용하여 작성
	int day = 31;
		
	switch(day) {
	case 30:
		System.out.println(day+"일까지 있는 달은 4월,6월,11월 입니다.");
		break;
	case 31:
		System.out.println(day+"일까지 있는 달은 1월,3월,5월,7월,8월,9월,10월,12월 입니다.");
		break;
	case 28:
		System.out.println(day+"일까지 있는 달은 2월 입니다.");
		break;
	}
		
        
        --------------------------
        
	int month1 = 1;
	
	switch(month1) {
	case 1: case 3: case 5: case 7: case 8: case 9: case 10:
	case 12:
		System.out.println(month1 + "월은 31일 까지 있습니다.");
		break;
	case 4: case 6: case 11: 
		System.out.println(month1 + "월은 30일 까지 있습니다.");
		break;
	case 2:
		System.out.println(month1 + "월은 28일 까지 있습니다.");
		break;	
	}

 

 

 

728x90
반응형

'JAVA(폐쇄) > 학원 내용' 카테고리의 다른 글

자바(JAVA) 4일차 - for문  (0) 2023.03.21
자바(JAVA) 3일차 - if 문  (0) 2023.03.20
자바(JAVA)기초 2일차- 형 변환  (0) 2023.03.20
자바(JAVA)기초 1일차  (0) 2023.03.20