. Java의 정석

[Java] 조건 연산자

박인영 2021. 7. 10. 18:48

 

 

 

<조건 연산자>

 

조건 연산자는 세 개의 피연산자를 필요로 하는

유일한 삼항 연산자이다.

연산자 중 대입 연산자(=) 다음으로 낮다.

 

조건식 ? 식1 : 식2

의 형태로

조건식이 true면 식1의 연산 결과를 반환하고

조건식이 false면 식2의 연산 결과를 반환한다.

 

int x = 5;
int y = 3;
int result ;
		
result = (x > y) ? x : y;
System.out.println(result);	// 5
		
result = (x < y) ? x : y;
System.out.println(result);	// 3

 

 

 

< 조건 연산 시 형변환>

 

조건 연산자의 식1과 식2,

이 두 피연산자의 타입이 다른 경우, 

이항 연산자처럼 산술 변환이 발생한다.

 

int j = 10;
double k = 15d;
System.out.println(j >= k ? j : k);		// 15.0
System.out.println(j >= k ? j - k : k - j);	// 5.0

위 예제에서도 자동 형변환이 일어나서

double 타입으로 통일되고 연산 결과 역시 double 타입이 된다.

조건 연산의 결과를 변수에 저장하는 경우

데이터 타입을 잘 맞추어야 한다.

 

 

 

<조건 연산의 중첩>

 

조건식 ? 식1 : (조건식 ? 식2 : 식3)

위와 같이 조건 연산자를 중첩으로 사용하면

셋 이상 중의 하나를 결과로 얻을 수 있다.

 

조건 연산자의 결합 규칙이 오른쪽에서 왼쪽이므로

괄호가 없어도 되지만

가독성을 높이기 위해 사용하는 것이 좋다.

 

int i= 0;
String result = i > 0 ? "양수" : (i < 0 ? "음수" : "영");
System.out.println(result);	// 영

 

조건 연산자는 여러 번 중첩할 수 있으나

가독성이 떨어지므로

꼭 필요한 경우 한번 정도만 중첩하는 것이 좋다.