삼항 연산자 (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 대체로 제한 |
삼항 연산자는 작고 간단한 판단 로직에 매우 유용하지만, 가독성을 해치는 복잡한 분기에는 적합하지 않다는 점을 기억하자.