Новый курс! Каждый программист должен знать генеративный ИИ!
Попробуйте бесплатный урок0
Can anyone please tell me what does the hashCode() method of String class contain?
and what kind of value it returns. in a normal class, if I call hashCode() method it returns the address of the object in decimal format. But for string class it is different. can anyone please explain it to me.
4 ответов
+ 2
"The value 31 was chosen because it is an odd prime. If it were even and the multiplication overflowed, information would be lost, as multiplication by 2 is equivalent to shifting. The advantage of using a prime is less clear, but it is traditional. A nice property of 31 is that the multiplication can be replaced by a shift and a subtraction for better performance: 31 * i == (i << 5) - i. Modern VMs do this sort of optimization automatically."
From:
https://stackoverflow.com/questions/299304/why-does-javas-hashcode-in-string-use-31-as-a-multiplier
From From:
A book 😜
+ 2
It returns the hashcode.
Hashcode is calculated by:
Quoted from Oracle:
"
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
using int arithmetic, where s[i] is the ith character of the string, n is the length of the string, and ^ indicates exponentiation. (The hash value of the empty string is zero.)"
0
and why 31? why not other number?
0
thnx