Going by the spec, there is no relationship between hashcode and memory location. However a memory address of an object could be a good (if not better) value for a hashcode.
The general contract of hashCode is:
Whenever it is invoked on the same object more than once during an
  execution of a Java application, the hashCode method must consistently
  return the same integer, provided no information used in equals
  comparisons on the object is modified. This integer need not remain
  consistent from one execution of an application to another execution
  of the same application. If two objects are equal according to the
  equals(Object) method, then calling the hashCode method on each of the
  two objects must produce the same integer result. It is not required
  that if two objects are unequal according to the
  equals(java.lang.Object) method, then calling the hashCode method on
  each of the two objects must produce distinct integer results.
  However, the programmer should be aware that producing distinct
  integer results for unequal objects may improve the performance of
  hashtables.
Source