Maybe can check each hashCode to see how they calculate it

https://github.com/openjdk/jdk/blob/master/src/java.base/share/classes/java/lang/Object.java

https://github.com/openjdk/jdk/blob/master/src/java.base/share/classes/java/lang/String.java

Eric Bresie
ebre...@gmail.com (mailto:ebre...@gmail.com)

> On May 6, 2021 at 12:49:30 PM CDT, Eduard <i...@dejongfrz.nl 
> (mailto:i...@dejongfrz.nl)> wrote:
> You are computing the hash on a compile time constant value, so that value is 
> itself a compile tiem constant, and can be deived from the memory location 
> where that constant gets allocated when the JVM starts up. This works for 
> strings as they are all internalized at compile time, that is stored in a 
> common table that holds a unique copy of each String, that way the storage 
> location corresponds with the content of the String, and so does the hash 
> value.
>
> If you look at the code for String.java, you will see it actually computes 
> the hash value based on the characters it contains. This only is used on 
> strings you create while your code is running.
>
> --
> Eduard
>
> Shaun Flynn wrote on 06/05/2021 17:22 (x-apple-data-detectors://4):
> > I ran into this, thinking it would be the same per execution, but it does 
> > not work like that.
> >
> > If you create a for loop doing something like...
> >
> > String test = "Hello World!";
> > for(i = 0; i < 100; i++) {
> > System.out.println(test.hashCode());
> > }
> >
> > You will get 100 identical values.
> >
> > Run it again, you will get 100 values identical values again, but the value 
> > has changed.
> >
> > Ie first run prints "46521890 (tel:46521890)" 100 times
> > Second run prints "-56905325700" 100 times
> >
> > And each subsequent run with produce a different hashCode repeated 100 
> > times.
> >
> > I believe (feel free to correct me) that the algorithm or formula for 
> > producing ths hashCode has the memory address as an input, thus it will 
> > different per execution because the JVM allocates the memory, which has the 
> > effect of appearing random.
> >
> > It confused me at first, but this is the intended functionality: if you are 
> > intending to store hashes for lookup or other purposes, use one of the 
> > already defined hash functions eg 
> > https://www.geeksforgeeks.org/sha-256-hash-in-java/
> >
> > Hope this helps.
> >
> > Shaun
> > On Thu, 6 May 2021, 13:46 Charles Johnson, <cehjohn...@gmail.com 
> > (mailto:cehjohn...@gmail.com)> wrote:
> > > On 06/05/2021 12:37 (x-apple-data-detectors://9), Christopher C. Lanz 
> > > wrote:
> > > > It would be helpful if I could rely on hashCode always to return the 
> > > > same integer for the same object.
> > >
> > > What are you doing such that needs to be the case?
> > >
> > >
> > >
> > > CJ
> > >
> > >
> > >
> >
> >
>
>

Reply via email to