[ 객체 끼리 비교 ]
Product p1 = new Product("laptop", "lenovo");
Product p2 = new Product("laptop", "lenovo");
두 개의 객체가 같은 값을 가지고 있더라도, 주소값이 다르므로
자바는 두 객체를 서로 다른 객체로 인식합니다.
1. equals
== 는 주소 값 다르게 잡혀있어서 당연히 다르게 나오고
equals 로도 기본은 false 잡히는데 이건 override 해서
주소값은 무시하고 값만으로 비교할 수 있게 해서 사용하기도 합니다.
예시 )
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
ProductsVO that = (ProductsVO) o;
return productId.equals(that.productId) && productName.equals(that.productName) && price.equals(that.price);
}
2. HashCode
: equals 를 override 해서 사용할 때는 세트로
hashcode 도 같이 override 설정을 해줘야 필드값이 같은 객체를 동일 객체로 인식해 줍니다.
(equals 만 해주면 동일 필드값은 객체는 hashcode 가 달라서 다른 객체로 인식)
예시 )
@Override
public int hashCode() {
return Objects.hash(productId, productName, price);
}
=> 필드값이 같으면
두 개의 객체에 equals 사용 시 동일 객체로 인식
'Back to the Java' 카테고리의 다른 글
[ Stream] 기본 문법 (0) | 2023.01.13 |
---|---|
객체지향 활용하기 (0) | 2023.01.10 |
TCP / UDP 프로토콜 방식 / Socket / Packet / (0) | 2022.07.11 |
Net 클래스 / 네트워크/ IP/Port / InetAddress 클래스 / (0) | 2022.07.11 |
File 클래스 => 파일/디렉토리 정보제공 (0) | 2022.07.08 |