삼항연산자는 세 개의 항이 있는 연산자를 말한다.
(조건식)? 연산식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 |