根据约书亚·布洛赫(Joshua Bloch)的《有效的Java》(这本书不够推荐,由于对stackoverflow的不断提及,我买了这本书):
选择值31是因为它是奇数质数。如果是偶数且乘法运算溢出,则信息将丢失,因为乘以2等于移位。使用质数的优势尚不清楚,但这是传统的。31的一个不错的特性是乘法可以用移位和减法来代替,以获得更好的性能:
31 * i == (i << 5) - i。现代VM自动执行这种优化。
欢迎分享,转载请注明来源:内存溢出
根据约书亚·布洛赫(Joshua Bloch)的《有效的Java》(这本书不够推荐,由于对stackoverflow的不断提及,我买了这本书):
选择值31是因为它是奇数质数。如果是偶数且乘法运算溢出,则信息将丢失,因为乘以2等于移位。使用质数的优势尚不清楚,但这是传统的。31的一个不错的特性是乘法可以用移位和减法来代替,以获得更好的性能:
31 * i == (i << 5) - i。现代VM自动执行这种优化。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)