Forums Register Login

HashCodes and Reference Variables

+Pie Number of slices to send: Send
Hi all,
I tried to print the value of a reference variable of a class(equals and hashcode not overriden) and i get a value like Classname@hexnumber.
I found out that the hex-number is nothing but the memory address of the object.
BUT,when i override the hashcode and equals,and then i create two equivalent objects,and print the reference variables,I get the same values,because they had same hashCodes,but when i tried to compare them using ==,they were not equal.
So,my question is,even if the reference variables show equal values when printed,why are they not '=='.Do the reference variables store somethong else and display something else?

here is a code





BIG CONFUSION.PLEASE HELP ASAP.

Thanks...
+Pie Number of slices to send: Send
Comparing h and h1 using "==" means that h and h1 are referring to the same exact object in memory, which they aren't
However, h.equals(h1) *should* be true at this point, but h==h1 is not.
+Pie Number of slices to send: Send
Hi ,
Yes,I know they don't refer to the same object but why then they give the same value when they are printed?
+Pie Number of slices to send: Send
When you print out the values, what's actually happening is that toString() is being used to convert to a String. You haven't overridden toString(), so it's using the version defined in Object.

And if you look up that definition in the Javadocs, you see:

The toString method for class Object returns a string consisting of the name of the class of which the object is an instance, the at-sign character `@', and the unsigned hexadecimal representation of the hash code of the object. In other words, this method returns a string equal to the value of:

getClass().getName() + '@' + Integer.toHexString(hashCode())


Which means that if you've overridden hashCode() to return the same values, then the output will be the same, even if they aren't the same object.
Let nothing stop you! Not even this tiny ad:
a bit of art, as a gift, the permaculture playing cards
https://gardener-gift.com


reply
reply
This thread has been viewed 935 times.
Similar Threads
How overrided HashCode() is being called in this method??
equals() and hascode() doubt
Hashing Question
Help needed in understanding the hashCode() method
a doubt in hashcode program
More...

All times above are in ranch (not your local) time.
The current ranch time is
Mar 28, 2024 02:31:07.