2014-02-13 2 views
3

... 나는 원시 형 int에 대한 hashCode() 방법을 사용할 수없는 것을 읽고 int로 불려 갔을 경우,이 의미 오류원시 타입의 HashCode를 볼 수있는 방법은 없나요? 기본 DS를 습격

error: int cannot be dereferenced

하는가를 던질 것이다 int n = 10 다음의 HashCode도됩니다 10이 될까 ??

아래 프로그램에서 int의 hascode를 계속보고 싶다면 IntegerWrapper과 같은 방법이 있습니까?

public static void main(String []args){ 
     String me = "hello"; 
     int n = 10; 

     int h1 = me.hashCode(); 
     int h2 = n.hashCode(); 

     System.out.println(h1); 
     System.out.println(h2); 
    } 
+0

당신은 * * INT는 역 참조 할 수 없기 때문에 오류가 "INT는 역 참조 할 수 없습니다"라는 얻을 : – Maroun

+0

ᴍarounᴍaroun @ : 나를 위해 대답을 요약 haha..yeah..i 추측 .... thankx 친구 !! !! :) – NoobEditor

+0

왜이 사실을 알고 싶은지 물어볼 수 있습니까? 표준이 아니라면, 비 프리미티브 (non-primitive) 타입 일지라도 'hashCode()'가 특정 값이어야한다는 것을 명심하라. 구현은 * 모든 * 객체에 대해'hashCode()'에 대해 상수 값, 즉'0'을 반환 할 수 있으며 여전히 준수 할 수 있습니다. –

답변

8

기본 유형에 대한 메소드를 호출 할 수 없습니다.

nint으로 표시됩니다. 방법이 없습니다.

If i still need to see hascode for int in below program

당신은 Integer 개체를 만들고 value이 어디

public int hashCode() { 
    return value; 
} 

로서의 hashCode()

Integer.valueOf(n).hashCode() 

Integer#hashCode()이 구현 얻을 수있는 것처럼 생각하는 이해가되지 않습니다 int 값을 줄 바꿈했습니다.

Does this means that if int n = 10 then its HashCode will also be 10??

int에는 해시 코드가 없습니다. 그러나 해당 Integer 래퍼의 값은 int입니다.

+0

@NoobEditor 답변을 업데이트했습니다. –

+0

@NoobEditor'int'에'hashCode()'가 없습니다. –

+0

@SotiriosDelimanolis : +1 : 수정 같이 맑습니다 ... 시간 내에 받아 들일 것입니다 !! :) – NoobEditor

1

간단한 대답은 intJava 개체가 아닙니다와 같은 것은 호출 hashCode()int에 대한가없는 것입니다.

2

개체에만 메서드가 있습니다. 프리미티브가 아닙니다. 당신은

int h2 = new Integer(n).hashCode(); 

그냥 int의 래퍼를 작성하고 그 위에 메서드를 호출 할 수 있습니다.

+0

+1 래퍼 제안에 ..... 부족한 설명을 ..... 아직도, thankx mate !!! :) – NoobEditor

0

int은 Java의 개체가 아닙니다. 이것은 원시 데이터 유형입니다. 그러나 Integer 클래스를 사용하면 int의 해시 코드를 가져올 수 있습니다.

System.out.println(new Integer(n).hashCode()); 

희망이 도움이됩니다.

0

새로운 편리한 방법 (자바 8)

자바 8은보다 편리 원시적 값의 해시 코드를 생성하는 정적 메소드를 가져왔다. 이러한 메소드는 기본 동급 클래스에 저장됩니다.

Google Guava이 Java의 핵심 라이브러리에 어떻게 영향을 주 었는지에 대해 이야기하는 OpenJDK 개발자 중 한 명인 bondolo (Mike Duigou?)와 this discussion에 언급되어 있습니다.

  • Float.hashCode
  • Integer.hashCode
    • Boolean.hashCode

      In Java 8 examples of small Guava inspired JDK additions include static hashCode methods added to the primitive types.

      ... 등등.

    0

    프리미티브가 해시 코드를 가지고 있다는 것은 의미가 없습니다. 그들 자신이 당신이 요청할 수있는 최고의 해시 코드입니다.

    Integer 해시 코드는 값 자체를 중복하여 반환하기 위해 구현되므로 예를 들어 java.util.HashSet에서 사용될 때 자체 해시 코드가 매핑됩니다.

    public int hashCode() { 
        return value; 
    } 
    
    관련 문제