if 문
String grade = "A";
int bonus;
if (grade == "A") {
bonus = 1000000;
} else if (grade == "B") {
bonus = 800000;
} else if (grade == "C") {
bonus = 500000;
} else {
bonus = 0;
}
if 문은 가장 기본적인 제어문이다. 그렇기에 사실상 if 문만 쓰더라도 문제 될 것은 없다. 그러나 특정 상황에서는 if 문보다 가독성이 더 높은 switch 문을 선호한다.
switch 문
String grade = "A";
int bonus;
switch (grade) {
case "A":
bonus = 1000000;
break;
case "B":
bonus = 800000;
break;
case "C":
bonus = 500000;
break;
default:
bonus = 0;
}
switch 문은 각 조건에 맞는 코드 블록을 실행하는 방법이다. (default는 어떠한 케이스에도 해당되지 않는 경우 실행되는 코드 블록이다.) if 문 대비 가독성이 높다만, 각 케이스마다 break를 걸어 switch 문을 빠져나가도록 해야 하는 불편함이 있다.
향상된 switch 문 (Java 14 이상)
String grade = "A";
int bonus = switch (grade) {
case "A" -> 1000000;
case "B" -> 800000;
case "C" -> 500000;
default -> 0;
};
Java 12에서 Preview Feature로 소개된 향상된 switch 문은 Java 14 이상부터 정식 기능으로 포함된다. 기존 대비 향상된 점은 아래와 같다.
1. 케이스마다 break 없이 ->로 표현하여 더 직관적이고 간결하다.
2. 여러 케이스가 동일한 값을 처리하는 경우, 중복 코드를 없앨 수 있다.
3. switch 문 내에서 yield를 사용해 값을 반환해 활용할 수 있다.
4. 복잡한 표현식도 사용 가능하다.
2번, 3번, 4번에 대해 감이 오지 않는 이들을 위해 다음 포스팅에서는 관련 예시를 준비해 보겠다.
삼항 연산자 (단일 조건)
(condition) ? value_if_true : value_if_false;
int age = 20;
String result = (age > 18) ? "성인" : "미성년자";
삼항 연산자는 단일 조건을 확인하여 하나의 값을 선택한다. 위 예시에서는 조건 (age > 18)에 대해 true인 경우 "성인", false인 경우 "미성년자"가 선택된다.
삼항 연산자 (복수 조건)
(condition1) ? value_if_true1 : (condition2) ? value_if_true2 : value_if_false2;
int age = 20;
String result = (x > 18) ? "성인" : (x > 12) ? "청소년" : "어린이";
중첩 삼항 연산자라고도 부른다. 복수 조건을 처리할 때 삼항 연산자를 중첩해서 사용하게 되는데, 문제는 가독성이 떨어진다는 것이다. 복잡한 로직이 들어갈수록 차라리 if 문을 사용하는 편이 낫다.
'프로그래밍 > 배웠어, 자바' 카테고리의 다른 글
[Java] '예외 처리' 완전 정복하기 (0) | 2025.01.07 |
---|---|
[Java] Scanner, BufferedReader (0) | 2025.01.06 |
[Java] 객체의 실제 메모리 주소 얻기 (0) | 2024.12.30 |
[Java] ==, equals() /문자열 비교 정복하기 (1) | 2024.12.27 |
[Java] 주요 연산자 알아보기 (0) | 2024.12.23 |