_

Always be tactful

프로그래밍/배웠어, 자바

[Java] if 문, switch 문, 삼항 연산자

funczun 2025. 1. 3. 01:03
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 문을 사용하는 편이 낫다.

728x90