Java 공부/자바 공부 (baek)

2021-09-13_01

Hesitater 2021. 9. 13. 16:07
728x90

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