[JAVA] 삼항연산자

728x90

삼항 연산자는 세 개의 피연산자를 가지며, 조건식을 평가하여 결과를 반환하는 연산자입니다. 자바에서의 삼항 연산자는 다음과 같은 형식을 갖습니다

조건식 ? 식1 : 식2

위의 형식에서 조건식은 참 또는 거짓으로 평가될 수 있는 불리언(boolean) 표현식이고, 식1과 식2는 각각 조건식이 참일 때와 거짓일 때 평가될 표현식입니다.

삼항 연산자는 다음과 같은 동작을 수행합니다:

조건식이 참인 경우, 식1의 결과가 전체 표현식의 결과가 됩니다.
조건식이 거짓인 경우, 식2의 결과가 전체 표현식의 결과가 됩니다.
예를 들어, 다음과 같은 코드를 살펴봅시다:

int a = 5;
int b = 10;
int max = (a > b) ? a : b;

위의 코드에서 조건식은 a > b이고, a와 b를 비교하여 참 또는 거짓으로 평가됩니다. a가 b보다 작기 때문에 조건식은 거짓이 되고, 따라서 전체 표현식의 결과는 b가 됩니다. 따라서 max 변수에는 10이 저장됩니다.

 

삼항연산자는 여러단계를 넣을 수도 있습니다.

int num = 3;

boolean mult2 = true;
boolean plus5 = true;

System.out.println(
        (!mult2 && !plus5) ? num
                //(!mult2 && !plus5)이 false라면 아래 문장이 실행
                : (mult2 && plus5) ? num * 2 + 5  
                //(mult2 && plus5)이 false라면 아래 문장이 실행
                : mult2 ? num * 2
                //mult2이 false라면 아래 문장이 실행
                : num + 5
);

위 코드에서는 !mult2 && !plus5 값이 false이고 mult2 && plus5값이 true이기 때문에 num*2+5 = 11이 출력됩니다.

 

삼항연산자에서도 단축평가가 적용됩니다. 즉 조건이 true라면 콜론(:) 앞만 평가하고 조건이 false라면 콜론(:)뒤만 평가합니다.

 

int x = 1, y = 2;        

int a = x < y ? (x += 2) : (y += 2); //1 < 2 ->조건이 true이므로 콜론(:)앞만 평가함
System.out.println("x = " + x+", y = " + y); //출력: x = 3, y = 2 -> x는 증가, y는 변화없음
int b = x < y ? (x += 2) : (y += 2); // 3 < 2 -> 조건이 false이므로 :(콜론) 뒤만 평가함
System.out.println("x = " + x+", y = " + y); //출력: x = 3, y = 4 -> x는 변화없음, y는 증가

 

삼항 연산자는 if-else 문을 간결하게 표현할 때 유용하게 사용될 수 있습니다. 예를 들어, 다음의 if-else 문과 동일한 동작을 하는 코드를 삼항 연산자로 표현할 수 있습니다:

int score = 75;
String result;

if (score >= 60) {
    result = "합격";
} else {
    result = "불합격";
}

위의 코드를 삼항 연산자로 표현하면 다음과 같습니다

int score = 75;
String result = (score >= 60) ? "합격" : "불합격";

삼항 연산자는 간단한 조건식에 대해서 간결하게 표현할 수 있으며, 코드의 가독성을 높일 수 있습니다. 그러나 복잡한 조건 또는 여러 개의 동작을 수행해야 할 경우에는 if-else 문을 사용하는 것이 더 적합할 수 있습니다.

'JAVA Programming > Java' 카테고리의 다른 글

[JAVA] 문자열 메서드  (0) 2024.07.02
[JAVA] final필드와 상수  (0) 2024.07.02
[JAVA] 자료형과 연산자  (0) 2024.06.26
자바 설치 및 기본 세팅  (0) 2024.06.25
[JAVA] 설치 및 설정 & 기본 문법  (0) 2024.05.27