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