2013-08-31 3 views
-2

Object 클래스의 toString() 메서드가 객체의 해시 코드를 반환하면 Object 클래스의 hashCode() 메서드는 무엇을 수행합니까? 또한 개체의 해시 코드를 반환하면 toString() 메서드에서 반환하는 값이 hashCode() 메서드에서 반환되는 값과 같은 이유는 무엇입니까?자바의 Object 클래스의 toString() 및 hashCode() 메서드

+3

toString() 메서드는 해시 코드를 반환하지 않습니다. – Kon

+0

_ hashCode() 메서드에서 반환하는 값으로 toString() 메서드에서 반환하는 값은 무엇입니까? _ 동사가 누락되었습니다. –

+0

이것은 분명히 초보자 질문이지만 약간의 통찰력을 보여줍니다. 나는 불공평하게 엎 지르지 않고 있다고 생각한다. –

답변

1

Object는 다른 모든 Java 클래스의 기본 클래스입니다. 즉, 모든 클래스가 암시 적으로 toStringhashCode을 지원합니다. 그러나 많은 클래스가 하나 또는 둘 모두를 오버라이드하므로 Object의 기본 구현을 얻지 못합니다.

예를 들어, Double 객체의 toString은 부동 소수점 숫자의 의미있는 기본 서식 버전을 반환하지만 double의 hashCode은 해시 테이블에서 검색을 키잉하는 데 적합한 float 값의 해시 버전을 반환합니다.

toString은 주로 디버그 인쇄를 지원하기위한 것입니다. 개발자가 느낀 점은 그 특정 객체 클래스에 대해 "가장 의미가있다"는 것입니다. Object의 경우 작업 할 것이별로 없으므로 hashCode 값의 텍스트 표현과 함께 클래스 이름이 사용됩니다. 반면에 hashCode은 해시 기반 검색을 용이하게하기위한 것이므로 개발자는 다르게 비교되는 객체에서는 다를 확률이 높지만 같은 것으로 비교되는 객체에서 동일하다는 보장이있는 숫자를 생성합니다. 여기

0

몇 가지 포인트 :

toString() 

반환 된 className @ 해시 코드를

hashCode() 

반환 해시 코드가 컬렉션 (설정 및지도)에 사용되는 경우에만 클래스

의 해시 코드, 자바에서 성능을 향상시키는 방법입니다. 컬렉션 프레임 워크를 사용하는 방법을 아는 지 알지 못합니다. 당신이 콜렉션에 객체를 검색 할 때하지만이

처럼 작동, 그것은 개체의 해시 코드를 찾고 시작하고, 일치하는 항목을 발견하면, 그것은 동일한 개체

검색 시작 그런 식으로 각 객체를 검색과 비교하려고하는 1000 개의 객체 컬렉션을 검색하는 대신 해시 코드 (예 : 50 일 수 있음)를 검색 한 다음이 해시 코드로 객체를 검색합니다.

equals() 및 hashCode() 메서드를 사용하여 작업하는 방법에 대한 많은 규칙이 있지만 어쨌든 쉽게 사용할 수 있습니다.

관련 문제