>If left unoverridden, it only yields a description of it’s class and location in memory
It contains the hashCode(), not the memory location. The default implementation of hashCode could use a memory location to generate the hash, however that isn't the case in all implementations. OpenJDK seems to have used an RNG by default in the past and currently derives a value from the thread state[1]
[1]https://srvaroa.github.io/jvm/java/openjdk/biased-locking/20...