As the documentation on Object.hashCode() states,
As much as is reasonably practical, the hashCode method defined by class Object does return distinct integers for distinct objects. (This is typically implemented by converting the internal address of the object into an integer, but this implementation technique is not required by the JavaTM programming language.)
So, the Java language has no requirement for the hashcode of the Object class to return the memory address of the object and therefore you should not rely on this.