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(비교문자열); // 문자열이 다른지 검사
