조건식 ? 값 또는 수식1 : 값 또는 수식2
true 또는 false인 boolean 타입? 뒤 (값1): 조건식이 true일 때 선택될 결과값: 뒤 (값2): 조건식이 false일 때 선택될 결과값if-else를 사용하면 코드가 5줄 이상 길어질 수 있지만, 삼항 연산자를 쓰면 단 한 줄로 해결된다.
int score = 85;
String result;
// if-else 방식
if (score >= 60) {
result = "합격";
} else {
result = "불합격";
}
// 삼항 연산자 방식
String result = (score >= 60) ? "합격" : "불합격";
삼항 연산자 안에 또 다른 삼항 연산자를 넣을 수 있다.
char grade = (score > 90) ? 'A' : ( (score > 80) ? 'B' : 'C' );
중첩을 너무 많이 하면 코드를 읽기가 힘들어지므로, 2단계 이상의 중첩은 if-else나 switch 문 사용을 권장한다.
:을 기준으로 양쪽에 오는 값들은 타입이 호환되어야 한다.
int result = (score > 90) ? "A" : 0; // 컴파일 에러! (String과 int는 섞일 수 없음)
메소드에서 조건에 따라 특정 값을 반환할 때
public int getAbsoluteValue(int n) {
return (n >= 0) ? n : -n; // 절댓값 반환
}
조건 ? 참일때 : 거짓일때의 형식을 가진다.if-else 문을 대체하여 코드를 간결하게 만든다.