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 |