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이 출력된다.

◎ 대입연산자는 연산자들 중에서 가장 낮은 우선순위를 가지고 있기 때문에 식에서 제일 나중에 수행된다.
    연산 진행 방향은 오른쪽에서 왼쪽으로 진행된다.