Mingyu Kim

비교 연산자

1. 비교 연산자의 종류

연산자 용도 설명
== 동등 비교 두 피연산자의 값이 같은지 검사
!= 부등 비교 두 피연산자의 값이 다른지 검사
> 크다 왼쪽이 큰지 검사
>= 크거나 같다 왼쪽이 크거나 같은지 검사
< 작다 왼쪽이 작은지 검사
<= 작거나 같다 왼쪽이 작거나 같은지 검사

2. 타입 변환과 비교 (Promotion in Comparison)

비교 연산자도 산술 연산자와 마찬가지로 연산 전 타입을 일치시킨다.

실수는 정밀도 차이가 발생할 수 있다.

float v1 = 0.1f;
double v2 = 0.1;
System.out.println(v1 == v2); // 결과: false!

float의 0.1과 double의 0.1은 실제 내부 이진수 값이 미세하게 다르기 때문이다. 이럴 때는 피연산자를 모두 float로 강제 형변환하거나, Double.compare()를 사용해야 안전하다.

3. 참조 타입 비교 (객체 비교)

String str1 = "자바";
String str2 = "자바";
String str3 = new String("자바");

System.out.println(str1 == str2); // true (동일한 리터럴 주소)
System.out.println(str1 == str3); // false (new로 생성된 다른 주소)
System.out.println(str1.equals(str3)); // true (내용물 자체가 같은지 비교)

문자열의 내용을 비교하고 싶을 때는 절대로 ==를 쓰지 말고, 반드시 .equals() 메소드를 사용하자.

4. 자바 21과 비교 연산 (Pattern Matching 맛보기)

instanceof 연산자와 함께 비교 연산이 더 강력해졌다. 타입 비교와 동시에 변수 선언까지 가능하다.

Object obj = "Hello";
if (obj instanceof String s && s.length() > 0) { // 타입 비교 + 변수 추출 + 논리 비교
  System.out.println(s);
}

5. 요약 및 체크포인트