Java에서 switch문은 if문과 달리 특정 값일 때 동작하는 문법이다.
기존 switch문을 자세히 보자.
public class OldSwitch {
public static void main(String[] args) {
String phoneName = "Apple";
switch (phoneName) {
case "Apple":
System.out.println("애플쓰군요!");
break;
case "SamSung":
System.out.println("SAMSUNG쓰군요!");
break;
case "LG":
System.out.println("LG쓰군요!");
break;
default:
System.out.println("어떤 폰 쓰시나요?>");
break;
}
}
}
해당 코드는 if문으로만 작성할 수 있는 코드이다. switch문은 특정 값일 때, 특정 코드가 동작하기 위해 고안된 코드인데. if문으로 작성한 코드랑 가독성이 비슷해 보인다.
public class OldSwitch {
public static void main(String[] args) {
String phoneName = "PIXEL";
if (phoneName == "Apple") {
System.out.println("애플쓰시네요?");
} else if (phoneName == "SamSung") {
System.out.println("SAMSUNG쓰시네여?");
} else if (phoneName == "LG") {
System.out.println("LG쓰시네요?");
} else {
System.out.println("어떤 폰 쓰시나요?>");
}
}
}
물론 if문 보다 위에 있는 switch문이 더 직관적이고 보기 쉬울 수도 있다, 하지만 많은 프로그래머들은 java의 switch문의 장점이 적다 생각해 JAVA14에서는 더 강력한 switch문이 탄생했다.
새로운 switch
String phoneName = "SAMSUNG";
switch (phoneName){
case "APPLE" -> System.out.println("애플쓰시네요?");
case "SAMSUNG" -> System.out.println("삼성쓰시네요?");
case "LG" -> System.out.println("엘지쓰시네요?");
default -> System.out.println("어떤거쓰세요?>");
};
새로운 switch문은 화살표가 첨가되었다. ":" 아닌 ->화살표로 조건에 해당되는 코드를 실행시킨다.
새로운 switch문은 하나의 case에 값도 여러 개 넣을 수 있다.
case "PIXEL","XIAOMI" -> System.out.println("??");
옛날 switch문이었으면, case를 두 개 사용해야 하는 코드이다.
무엇보다 break문이 사라져 코드의 길이가 줄어들었다.
새로운 switch문은 다양한 기능이 첨가되었다.
대표적으로 값을 바로 리턴하여 변수 같은 곳에 대입할 수 있다.
int grade = 2;
int coupon = switch (grade) {
case 1 -> 1000;
case 2 -> 2000;
case 3 -> 3000;
default -> 0;
};
System.out.println(coupon);
이처럼 coupon 변수를 선언과 동시에 switch문으로 해당 조건에 맞는 값을 변수에 대입할 수 있다.
여기서 coupon변수는 2000으로 값이 부여되었다.
String userName = "홍길동";
System.out.println(
switch (userName) {
case "홍길동" -> "Hello my friend";
default -> "How are you???";
}
);
이런 식으로 메서드에 인자값을 switch문을 통해 특정 조건일 때 특정 인자를 리턴할 수 있다.
하지만 이처럼 값을 리턴할 경우 반드시 default가 있어야 한다.
yield 키워드
case에 여러 개의 문장을 동작시켜야 하는 경우도 있다. 이럴 땐 새로운 switch문에서 {} 중괄호 안에 여러 문장을 넣는다.
String item= "";
int price = switch (item){
case "TV"-> 500_000;
case "air fryer" -> 80_000;
default -> {
int emptyCheck = item.length();
checkedEmpty(emptyCheck);
yield emptyCheck;
}
};
System.out.println(price);
static void checkedEmpty(int emptyCheck){
if(emptyCheck==0){
System.out.println("담은 물건이 없습니다.");
}
}
대표사진 출처
https://www.flaticon.com/kr/free-icon/java_226777
'Java' 카테고리의 다른 글
[Java] 배열을 쉽게 출력하기! (1) | 2024.09.16 |
---|---|
[Java의 정석] Chapter4 연습문제 (3) | 2024.09.13 |
[Java] 윈도우 cmd로 Java 컴파일하기 (0) | 2024.08.31 |
[Java] JAVA의 정석 기초편 챕터3 문제 (0) | 2024.08.30 |
[Java] 문자열의 비교 (equals override) (0) | 2024.08.30 |