p03equals;
class Ex01
equals: for any non-null reference values x and y,
this method returns true if and only if x and y refer to the same object (x == y has the value true).
객체주소값이 다르니깐 false들이 나옴
Ex02
결과값
b2와 b3의 hashCode값이 다르게 나옵니다. 왜냐 Object에서 hashCode는 각 개체의 주소값을 반환하니깐
Object에서 hashCode 재정의 할때 식이 중요한게 아니라
filed title 과 filed writer가 같으면 같은 hashcode가 생성 된다는게 중요
+대신 다른게 와도 상관없음 , 해시코드 값이 달라지지만 서로 같으면 같은값이 나오고 다르면 다른값이 나옴
선생님 예시
결과값
public int hashCode()로 재정의 했기때문에 2011008706 값으로 같게 나온다
그러므로 b2.equals(b3) 가 true 가 나온다.
hashcode 와 equals 객체가 같은지 아닌지를 판단할때 실제로 쓰이는지
예시로 확인 Ex03Set
다른 객체를 담고 있는객체 :collection 수학의 집합개념
Ex04Set
같은객체는 같은 바구니에 담겼어야됫는데 다른 바구니에 담겨서
hashcode
메서드재정의를 했지만
hashcode 재정의를 하지 않아서
같다 라는 것을 쓰려면 hashcode를 꼭 재정의 해야됨
그래서 Generate hasCode() and equals() 가 메뉴이있어
많이 사용 되니깐.
equals를 재정의 했어도 다른객체로 취급하네
hashCode를 같이 재정의 해야됨 (model 과 year이 같으면 같은 hashcode 생성)
Ex05
g확인하는법.
결과값
p1 과 p3의 equals 를 하고 싶어서 hashcode를 재정의하였다 hashcode의 식이 중요한게아니라
객체가 같다고 판단하려면 equals 와 hashcode를 재정의 해야한다는것과
hashCode()가 같으면 동등객체인지 확인 하기위해 equals() 를 쓰면 됨
동등객체 확인을 위해 equals를 재정의 해서 같은지 확인하려고하니
hashCode()가 달라서 false가 나오니
hashCode()를 같게 만들어주게 메서드 재정의 해야됨
sourse ( shitf + alt +s) 에서
Generate Construcor using Fields
Generate hashCode() and equals()
Generate toString()
Generate Getters and Setters
Override/implement Methods
를 사용해서 작성에 편리함을 위해서
'Java 공부 > 자바 공부 (baek)' 카테고리의 다른 글
2021-09-15 p.654제네릭 맛만보기 (0) | 2021.09.15 |
---|---|
2021-09-14 (0) | 2021.09.14 |
2021-09-13 (0) | 2021.09.13 |
2021-09-10 (0) | 2021.09.10 |
2021-09-08_ (0) | 2021.09.08 |