Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Any way to see HashCode of primitive types?

Tags:

java

hashcode

Mugging up basic D.S....I read that, no hashCode() method for primitive type int is available and if called on int, it will throw error

error: int cannot be dereferenced

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

If i still need to see hascode for int in below program, is there a method to see it, like Integer Wrapper???

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);
     }
like image 644
NoobEditor Avatar asked Feb 13 '14 08:02

NoobEditor


4 Answers

You cannot invoke methods on primitive types.

n is declared as int. It does not have methods.

It does not make sense to think like

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

You could create an Integer object and get its hashCode()

Integer.valueOf(n).hashCode()

Integer#hashCode() is implemented as

public int hashCode() {
    return value;
}

where value is the int value it's wrapping.

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

The int doesn't have a hashcode. Its Integer wrapper will however have the value of the int it's wrapping.

like image 55
Sotirios Delimanolis Avatar answered Sep 21 '22 06:09

Sotirios Delimanolis


New Convenience Methods (Java 8)

Java 8 brought static methods to more conveniently generate a hash code for primitive values. These methods are stored on the primitive equivalent class.

Mentioned in this discussion with bondolo (Mike Duigou?), one of the OpenJDK developers, talking about how Google Guava has influenced the core libraries in Java.

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

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

…and so on.

like image 39
Basil Bourque Avatar answered Sep 17 '22 06:09

Basil Bourque


Only Objects have methods. Not primitives. You might want

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

Just create an Wrapper of int and invoke method on it.

like image 25
Suresh Atta Avatar answered Sep 17 '22 06:09

Suresh Atta


Simple answer is int is not a Java object and there is not such thing call hashCode() for int.

like image 43
Ruchira Gayan Ranaweera Avatar answered Sep 17 '22 06:09

Ruchira Gayan Ranaweera