首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么String中的hashCode()使用31作为乘数?

为什么String中的hashCode()使用31作为乘数?

提问于 2017-12-20 15:25:41
回答 2关注 0查看 492

在Java中,哈希代码用于String对象被计算为

代码语言:txt
复制
代码语言:txt
复制
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]

使用int算术,其中s[i]是字符串的i第四个字符,是字符串n的长度,并^指示指数。

为什么31被用作乘数?

我知道乘数应该是一个相对较大的素数。那么为什么不是29,或37,甚至97?

回答

和开发者交流更多问题细节吧,去 写回答
相关文章

相似问题

相关问答用户
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档