Java
[Java] 그 외의 연산자
gorusair
2021. 12. 14. 23:31
조건 연산자 ?:
조건 연산자는 조건식, 식1, 식2 모두 세 개의 피연산자를 필요로 하는 삼항 연산자이며, 삼항 연산자는 조건 연산자는
조건 연산자 하나 뿐이다.
조건식? 식1 : 식2
조건연산자는 첫 번쨰 피연산자인 조건식의 평가결과에 따라 다른 결과를 반환한다.
조건식의 평가결과가 true이면 식1이 false이면 식2가 연산결과가 된다.
result = (x>y) ? x: y;
result =(5>3)? 5 : 3;
result = (true) ? 5 : 3;
result = 5;
▶ if로 바꿔서 사용이 가능하다.
if( x> y )
result = x; // x > y 가 true일떄
else
result = y; // x> y가 false 일떄
▶조건 연산자를 중첩해서 사용하면 셋 이상 중의 하나의 결과를 얻을 수 있다
result = x>0 ?1 :( x==0 ? 0 :-1);
result = x> 0 ? 1 :(3 == 0 ? 0 :-1);
result = x> 0 ? 1 :(false ? 0 : -1) // 조건식이 false이므로, 연산결과는 식2
result = 3> 0 ? 1 : -1;
result = true ? 1: -1;
reusult = 1;
※ 조건 연산자를 여러 번 중첩하면 코드가 간략해지긴 하지만, 가독성이 떨어지므로 꼭 필요한 경우에 한번 정도만
중첩하는 것이 좋다.
public class OperatorEx32 {
public static void main(String[] args) {
int x, y, z;
int absX, absY, absZ;
char signX, signY, signZ;
x = 10;
y = -5;
z = 0;
absX = x >= 0 ? x: -x; // x값이 음수이면 , 양수로 만든다.
absY = y >= 0 ? y : -y;
absZ = z >= 0 ? z : -z;
signX = x > 0 ?'+' : ( x ==0 ? ' ' : '-'); // 조건 연산자를 중첩
signY = y > 0 ?'+' : ( y ==0 ? ' ' : '-');
signZ = z > 0 ?'+' : ( z ==0 ? ' ' : '-');
System.out.printf("x=%c%d%n", signX, absX);
System.out.printf("x=%c%d%n", signY, absY);
System.out.printf("x=%c%d%n", signZ, absZ);
}
}
x=+10
x=-5
x= 0
대입 연산자 = op =
대입 연산자는 변수와 같은 저장공간에 값 또는 수식의 연산결과를 저장하는데 사용된다.
System.out.println(x = 3); // 변수 x에 3이 저장되고
System.out.println(3); // 연산결과인 3이 출력된다.
◎ 대입연산자는 연산자들 중에서 가장 낮은 우선순위를 가지고 있기 때문에 식에서 제일 나중에 수행된다.
연산 진행 방향은 오른쪽에서 왼쪽으로 진행된다.