본문 바로가기
Java

java. 삼항연산자

by miso :) 2020. 11. 12.

삼항연산자는 세 개의 항이 있는 연산자를 말한다.

(조건식)? 연산식1 : 연산식2 ;

조건식 부분의 소괄호는 꼭 하지 않아도 되며, 이 부분에는 비교 또는 논리연산자를 사용하므로 연산 결과 true 또는 false 가 나온다. 조건식이 참이면 연산식1번을 실행하고, 거짓이면 연산식2번을 실행한다. 

 

 예시)

int x = 10;
int absX;
char signX;

absX = (x >= 0) ? x : -x;
signX = (x > 0) ? '+' : (x == 0 ? ' ' : '-');

System.out.println("x = " + signX + absX);
System.out.printf("x = %c%d", signX, absX);

결과)

더보기

                    x = +10 
                    x = +10

 

위의 예시는 변수값이 양수인지 음수인지 판단하고 그에 해당하는 부호를 붙여 출력하는 코드이며 분석을 해보면

1) absX = (x >= 0) ? x : -x;

먼저 x값이 0보다 크거나 같은지 판단한 후 조건식이 true이면 x값 그대로 absX변수에 대입하고, false라면 x값에 -부호를 연산해 x의 절댓값을 absX변수에 대입한다. 

절댓값(absolute value)을 구하는 변수라서 변수명을 abs로 선언했다.

2) signX = (x > 0) ? '+' : (x == 0 ? ' ' : '-'); 

삼항연산식 안에 또 다른 삼항연산식이 들어갈 수 있다는 걸 보여주는 예시이다.

x값이 0보다 큰지 판단 후 크다면(true) + 문자를 signX에 대입, 작다면(false) 삼항연산자를 실행한다.

false 연산식 위치에 있는 삼항연산식을 보자

x가 0과 같은지 묻는 조건식이 있다. 같다면 공백을 signX에 대입하고, 0이 아니라면 - 문자를  signX에 대입한다.

 

정리하자면 1번에서 x값을 절댓값으로 만들어 대입하고, 2번에서 그에 알맞은 부호를 대입하는 코드이다.

실행 결과 또한 복습 의미에서 println문과 printf문을 사용해 두 가지 방법으로 출력했다.

println문은 + 연산자로 출력문을 만들었고, printf문은 char 타입은 %c, int 타입은 %d로 출력문을 만들었다.

+서식문자 %c, %d 타입은 참고 2020/11/10 - [Java] - java. print. 서식 문자. 제어 문자

 

위의 코드에 음수와 0 값을 변수에 대입해 보면 아래와 같이 나온다.

 

예시)

int y = -20, z = 0;
int absY, absZ;
char signY, signZ;

absY = (y >= 0) ? y : -y;
signY = (y > 0) ? '+' : (y == 0 ? ' ' : '-');

absZ = (z >= 0) ? z : -z;
signZ = (z > 0) ? '+' : (z == 0 ? ' ' : '-');

System.out.println("y=" + signY + absY);
System.out.println("z=" + signZ + absZ);

결과)

더보기

                    y = -20 
                    z =  0     

 

 

 

[다음 글 미리 보기]

조건문 if문 & switch문

'Java' 카테고리의 다른 글

java. 중첩if문 switch문  (0) 2020.11.20
java. 조건문(if문, switch문)  (0) 2020.11.13
java. 연산자  (0) 2020.11.11
java. print. 서식 문자. 제어 문자  (0) 2020.11.10
java. print. char & string  (0) 2020.11.09