삼항(?:) 연산자
삼항 연산자는 세 개의 피연산자를 사용하는 조건식에 해당합니다. 연산식의 과정은 일반 조건문에 사용되는 if 구문과 동일합니다. 삼항 연산자에서 조건식에 이어 나오는 ? A는 해당 조건문이 true이 경우에 대한 반환 값 A를 의미합니다. 그 다음 이어지는 : B는 조건문이 false인 경우에 대한 반환 값 B를 의미합니다.
구분 | 연산자 | 항의 개수 | 연산식 결과 |
조건 | (조건식) ? A : B | 삼항 | 조건식이 true인 경우 피연산자 A를 리턴, 그렇지 않은 경우 피연산자 B를 리턴 |
아래 예시는 if 구문과 삼항 연산자를 사용하고 있습니다. 두 구문의 연산 과정과 결과는 완전히 동일합니다.
int m = 0;
int x = 100;
/**
* if 구문을 사용하는 조건문
*/
if (0 < x) {
m = 1;
} else {
m = -1;
}
/**
* 삼항 연산자를 사용하는 조건문
*/
m = (0 < x) ? 1 : -1; // 1
삼항 연산자를 사용했을 때의 특징은 다음과 같습니다. 이는 if 구문과 완전히 대비되는 특징입니다.
- 인라인 조건문(Inline if)으로 불리며, 조건문을 한 줄로 처리하므로 코드가 더 간결해집니다.
- 조건문의 반환 값(? A : B)을 특정 변수에 대입하거나 인자로 전달할 때 가독성이 좋습니다. 위의 예시 코드와 같이 조건문 결과에 따른 반환 값 A와 B가 동일한 변수에 대입되는 경우가 대표적입니다.
- 조건문의 결과로 수행되는 코드가 복잡한 내용을 포함하는 경우 부적절하거나 사용 할 수 없습니다.
- 삼항 연산자로 코드를 인라인으로 처리한다고 하더라도 수행 속도가 빨라지는 것은 아닙니다.
- 삼항 연산자의 각 피연산자가 복잡한 구성을 지니는 경우 오히려 가독성이 떨어질 수 있습니다.
연쇄 삼항 연산자
삼항 연산자의 피연산자 A 또는 B에 또 다른 삼항 연산자 식을 추가하여 연쇄 처리 할 수 있습니다. 이 역시 간단한 조건문에 대해서 연쇄 처리해야 하는 경우 가독성이 높아지는 장점이 있습니다. 아래 예시는 if 구문과 삼항 연산자를 사용하여 동일한 연산 과정을 처리하는 코드입니다.
int m = 0;
int x = 100;
/**
* if 구문을 사용하는 조건문
*/
if (0 < x) {
m = 1;
} else if (0 == x) {
m = 0;
} else {
m = -1;
}
/**
* 삼항 연산자를 사용하는 조건문
*/
m = (0 < x) ? 1 : (0 == x) ? 0 : -1; // 1
'Java > Java SE, EE' 카테고리의 다른 글
[Java/Java SE, EE] 반복문(for, while, do-while) (0) | 2022.01.16 |
---|---|
[Java/Java SE, EE] 조건문(if, if-else if-else, switch) (0) | 2022.01.16 |
[Java/Java SE, EE] 비트 마스크(Bitmask) (0) | 2022.01.16 |
[Java/Java SE, EE] 비트 시프트 연산자 (0) | 2022.01.16 |
[Java/Java SE, EE] 비트 논리 연산자 (0) | 2022.01.11 |