[내배캠 Spring TIL] Java 객체 비교 썸네일

[내배캠 Spring TIL] Java 객체 비교

Java
비교
2024년 8월 5일

Java에서 객체를 비교하는 방법에 대해 정리해보려한다.

1. == 연산자 #

객체의 메모리 주소를 비교한다.

두 객체가 동일한 객체인지(즉, 동일한 메모리 주소를 참조하는지) 확인할 때 사용된다.

String a = new String("hello");
String b = new String("hello");
boolean result = (a == b);  // false, 다른 메모리 주소를 참조

2. equals() 메서드 #

객체의 내용을 비교한다.

두 객체의 실제 값이 같은지 확인할 때 사용된다.

String a = new String("hello");
String b = new String("hello");
boolean result = a.equals(b);  // true, 내용이 동일

hashCode() #

두 객체가 equals()에 의해 같다고 판정되면, 두 객체의 hashCode() 값도 같아야 한다. 이는 주로 Hash 기반 컬렉션(예: HashMap, HashSet)에서 사용된다.

equals() 메서드를 재정의하면, hashCode() 메서드도 재정의해야 한다.

3. compareTo() 메서드와 Comparable 인터페이스 #

두 객체의 순서를 비교한다.

객체의 자연 순서를 정의할 때 사용되며, 주로 정렬에 사용된다.

public class Person implements Comparable<Person> {
    private String name;

    @Override
    public int compareTo(Person other) {
        return this.name.compareTo(other.name);
    }
}

4. Comparator 인터페이스 #

특정 기준에 따라 두 객체의 순서를 비교한다.

객체의 자연 순서와 다른 순서로 정렬하고자 할 때 사용된다.

public class PersonNameComparator implements Comparator<Person> {
    @Override
    public int compare(Person p1, Person p2) {
        return p1.getName().compareTo(p2.getName());
    }
}

최근 게시물

김진근 • © 2025