코드 그라데이션

값 타입의 비교 본문

Spring/JPA 공부

값 타입의 비교

완벽한 장면 2023. 8. 27. 09:58

값 타입의 비교

 

예시

public class ValueMain {

  public static void main(String[] args) {

    int a = 10;
    int b = 10;
    System.out.println("a == b : " + (a==b)); // true 출력
    
    Address address1 = new Address("seoul", "garosugil", "10000");
    Address address2 = new Address("seoul", "garosugil", "10000");
    System.out.println("address1 == address2 : " + (address1==address2));
  }
}

 

실행 결과

 

값 타입의 비교 - 동일성 비교와 동등성 비교

 

그 전에

public class ValueMain {

  public static void main(String[] args) {

    int a = 10;
    int b = 10;
    System.out.println("a == b : " + (a==b)); // true 출력

    Address address1 = new Address("seoul", "garosugil", "10000");
    Address address2 = new Address("seoul", "garosugil", "10000");
    System.out.println("address1 == address2 : " + (address1==address2));

    System.out.println("address1 equals address2 : " + (address1.equals(address2))); //이렇게
  }
}

실행 결과

여전히 false 가 나온다.

 

왜? 

아직 오버라이딩을 구현하지 않았기 때문에...

Address에 equals, hashCode 오버라이딩

@Override
 public boolean equals(Object o) {
   if (this == o) {
     return true;
   }
   if (o == null || getClass() != o.getClass()) {
     return false;
   }
   Address address = (Address) o;
   return Objects.equals(city, address.city) && Objects.equals(street,
       address.street) && Objects.equals(zipcode, address.zipcode);
 }

@Override
 public int hashCode() {
   return Objects.hash(city, street, zipcode);
 }

 

이제 다시 실행해보면

드디어 바뀌어 있음을 확인할 수 있음.

 

 

 

728x90

'Spring > JPA 공부' 카테고리의 다른 글

실전 예제 6. 값 타입 매핑  (0) 2023.08.28
값 타입 컬렉션  (0) 2023.08.27
값 타입과 불변 객체  (0) 2023.08.26
임베디드 타입(복합 값 타입)  (0) 2023.08.26
기본 값 타입  (0) 2023.08.26
Comments