equals메서드
매개변수로 객체의 참조변수를 받아서 비교하여 그 결과를 boolean값으로
알려주는 역할을 한다.
ex)
public boolean equals(object obj){
return (this==obj);
}
두개의 객체의 같고 다름을 equals 메서드로 비교하면 항상 false로 반환한다.
hashcode 메서드
object 클래스에 있는 hashcode 메서드를 오버라이딩하면 객체주소값을 이용해서
해쉬코드를 리턴하기 때문에 절대 중복될수없다.
단 프로그램을 종료하고 다시 실행하면 값이 달라진다.
프로그램을 종료하기전까지는 해쉬코드는 계속 유지되므로 equals 메서드를 오버라이딩 하면서 hashcode 메서드도
같이 오버라이딩하는것이 일반적이다
String str1 = new String("abc")
String str2 = new String("abc")
를 하면 해쉬코드가 같게 나온다. 이유는 문자열의 내용이 같으면 동일한 해쉬코드를 반환하도록
해쉬코드 메서드를 오버라이딩하였기 때문에, 문자열의 내용이 같으면 해쉬코드값이 같다.
반면에 System.identityhashCode(str1 or str2) 를 하면 객체의 주소값으로 해쉬코드값을 생성하기
때문에 모든객체에 대해 항상 다른 해시코드값을 리턴하는것을 보장한다.
그래서 str1,str2 해쉬코드는 같지만 서로다른 객체라는것을 알수있다.
System.identityhashCode() 의 호출결과는 실행 할때마다 달라질수있다.
Oracle , LAG , LEAD (0) | 2015.01.22 |
---|---|
자바 clone() , 마커 인터페이스 란? (0) | 2015.01.22 |
자바 try/catch , runtimeException ,Exception 의 차이 (0) | 2015.01.19 |
오라클 8 이상 추가 함수들 공부 (0) | 2015.01.18 |
자바 awt를 이용하여 입력값을 랜덤으로 출력해주는 프로그램 (0) | 2015.01.09 |