너와 나의 개발 고리

[JAVA] chap03 연산자_비교연산자 본문

JAVA/이것이 자바다

[JAVA] chap03 연산자_비교연산자

Oli-Viaaaa 2023. 8. 9. 23:24

비교 연산자는 동등(==, !=) 또는 크기(<, <=, >, >=) 를 평가해서 boolean 타입인 true/false를 산출한다.

비교 연산자는 흐름 제어문인 조건문(if), 반복문(for, while)에서 실행 흐름을 제어할 때 주로 사용한다.

구분 연산식 설명
동등 비교 피연산자1 == 피연산자2 두 피연산자의 값이 같은지를 검사
피연산자1 != 피연산자2 두 피연산자의 값이 다른지를 검사
크기 비교 피연산자1 > 피연산자2 피연산자1이 큰지를 검사
피연산자1 >= 피연산자2 피연산자1이 크거나 같은지를 검사
피연산자1 < 피연산자2 피연산자1이 작은지를 검사
피연산자1 <= 피연산자2 피연산자1이 작거나 같은지를 검사

 

피연산자의 타입이 다를 경우에는 비교 연산을 수행하기 전에 타입을 일치시킨다.

'A' == 65 -> 'A'를 int타입으로 변환  -> 65 == 65   -> true
3 == 3.0  -> 3을 double타입으로 변환 -> 3.0 == 3.0 -> true

 

한 가지 예외가 있다.

0.1f == 0.1 -> 0.1f를 double타입으로 변환 -> 0.1 == 0.1 -> false

0.1f가 double타입으로 변환되면 0.1 == 0.1 이 되어 true가 산출되어야 하지만 결과는 false가 산출된다.

 

그 이유는 부동 소수점 방식을 사용하는 실수 타입은 0.1을 정확히 표현할 수 없고
float타입과 double타입의 정밀도 차이 때문이다.

해결책은 피연산자를 float타입으로 강제 타입 변환 후 비교 연산을 하면 된다.

0.1f == (float)0.1 > true

 

문자열을 비교할 때에는 동등연산자 대신 equals( )와 !equals( )를 사용한다.

boolean result =   원본문자열.equals(비교문자열); // 문자열이 같은지 검사(대소문자 구분)
boolean result = ! 원본문자열.equals(비교문자열); // 문자열이 다른지 검사