Skip to main content

삼항 연산자 (Ternary Operator)


1. 개요

1.1 삼항 연산자란?

삼항 연산자(Ternary Operator)는 조건에 따라 값을 선택하는 Java의 축약 표현식이다. 일반적인 if-else 구문보다 간결하게 작성할 수 있으며, 값을 반환하는 표현식으로 활용된다.

int max = (a > b) ? a : b;
  • 첫 번째 피연산자: 조건 (boolean 결과)
  • 두 번째 피연산자: 조건이 참일 때 반환 값
  • 세 번째 피연산자: 조건이 거짓일 때 반환 값

1.2 사용 목적

  • UI 메시지 처리: 상황에 따라 메시지 문구 설정
  • 값 분기 처리: 조건에 따라 상수/계산식 결정
  • 간단한 로직 처리에서 코드 길이 절감

2. 문법

조건식 ? 참일 때의 값 : 거짓일 때의 값;

2.1 예시

int age = 20;
String type = (age >= 18) ? "성인" : "미성년자";  // 출력: 성인
  • 조건식: age >= 18 → true
  • 참일 때: "성인"
  • 거짓일 때: "미성년자"

3. 삼항 연산자 vs if-else

3.1 차이점

항목

삼항 연산자

if-else 구문

반환 가능 여부

✅ 값 반환 (표현식)

❌ 문(statement)

간결함

✅ 매우 간결

❌ 구조적으로 길어질 수 있음

가독성

✅ 단순 조건일 때만

✅ 복잡 조건/로직에 적합

3.2 비교 예시

// 삼항 연산자
int max = (a > b) ? a : b;

// 동일한 if-else
int max;
if (a > b) {
    max = a;
} else {
    max = b;
}

4. 중첩 삼항 연산자

4.1 기본 중첩 예제

int score = 85;
String grade = (score >= 90) ? "A" :
               (score >= 80) ? "B" :
               (score >= 70) ? "C" : "F";
System.out.println(grade);  // 출력: B

4.2 주의사항

  • 중첩이 많아질수록 가독성이 급격히 저하됨
  • 중첩보다는 if-else 또는 switch를 고려할 것

5. 실전 예제 모음

5.1 나이 판별

int age = 16;
String result = (age >= 18) ? "성인" : "미성년자";
System.out.println(result);  // 출력: 미성년자

5.2 최대값 구하기

int a = 25, b = 17;
int max = (a > b) ? a : b;
System.out.println("최대값: " + max);  // 출력: 25

5.3 짝수/홀수 판별

int num = 9;
String parity = (num % 2 == 0) ? "짝수" : "홀수";
System.out.println(parity);  // 출력: 홀수

5.4 로그인 상태 메시지

boolean isLoggedIn = false;
String message = isLoggedIn ? "환영합니다!" : "로그인이 필요합니다.";
System.out.println(message);  // 출력: 로그인이 필요합니다.

5.5 다중 조건 - 세금율 계산 예시

double income = 45000;
double taxRate = (income > 80000) ? 0.35 :
                  (income > 40000) ? 0.25 : 0.15;
System.out.println("세율: " + taxRate);
// 출력: 세율: 0.25

✅ 요약

특징

설명

장점

간결한 조건 처리, 변수 할당 가능

단점

복잡한 로직에는 가독성 저하

사용 추천

UI 메시지, 단순 조건 분기, 코드 압축

사용 주의

중첩 사용은 피하고 if-else 대체로 제한

삼항 연산자는 작고 간단한 판단 로직에 매우 유용하지만, 가독성을 해치는 복잡한 분기에는 적합하지 않다는 점을 기억하자.