Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- JPQL
- 김영한
- QueryDSL
- SpringBoot
- 스프링 핵심 원리
- http
- Spring Boot
- java
- AOP
- Proxy
- pointcut
- 스프링 핵심 기능
- JDBC
- 그리디
- Thymeleaf
- kotlin
- Exception
- 인프런
- Greedy
- Android
- jpa
- Servlet
- spring
- 자바
- db
- transaction
- 백준
- springdatajpa
- 알고리즘
- 스프링
Archives
- Today
- Total
개발자되기 프로젝트
값 타입 비교 본문
1. 값 타입
- 값 타입 : 인스턴스가 달라도 그 안에 값이 같으면 같은 것으로 봐야 함.
- 값이니까!
- 그런데 객체 타입은 ==비교하면 false가 나옴..
int a = 10;
int b = 10;
Address a = new Address(“서울시”)
Address b = new Address(“서울시”)
2. 값 타입의 비교
- 동일성(identity) 비교와 동등(equivalence)비교를 구분해서 사용해야 한다.
- 동일성(identity) 비교 : 인스턴스의 참조값을 비교. == 비교
- 동등(equivalence)비교 : 인스턴스 값을 비교. equals() 사용
- 값 타입은 a.equals(b)를 사용해서 동등성 비교를 해야함!
- 값 타입의 equals() 메서드를 적절하게 재정의 필요(주로 모든 필드 사용)
- equals()의 기본이 ==비교이다. 따라서 그냥 쓰면 위와같이 Address비교하면 false.
public boolean equals(Object obj) { return (this == obj); }
- override 어떻게 하지?
-
@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); }
- override 후에 Address 비교시 true가 나왔당.
-
address1 == address2 false address1 equals address2 : true
3. GitHub : 210813 값 타입 비교
'인프런 > [인프런] 자바ORM 표준 JPA 프로그래밍' 카테고리의 다른 글
[예제] 값 타입 매핑 (0) | 2021.08.14 |
---|---|
값 타입 (0) | 2021.08.13 |
값 타입과 불변 객체 (0) | 2021.08.13 |
임베디드 타입 (0) | 2021.08.12 |
기본 값 타입 (0) | 2021.08.12 |
Comments