gpt4 book ai didi

java - 为什么在为变量设置值时使用位移位?

转载 作者:搜寻专家 更新时间:2023-11-01 01:10:20 27 4
gpt4 key购买 nike

我正在查看 Java 中 HashMap 类的源代码,发现变量被初始化为

static final int MAXIMUM_CAPACITY = 1 << 30;

为什么不只是

static final int MAXIMUM_CAPACITY = 1073741824;

意思是一样的。是否有任何性能原因,或者它只是一个奇特的东西?

最佳答案

如果您使用的是位数,1 << 30使它比 1073741824 更明确.

应该没有任何性能差异,因为任何合理的编译器都应该在编译时评估表达式。关于它的一切都是不变的,所以没有理由不这样做。

它也更容易发现打字错误;写1 << 31 << 20如果你知道它应该是十亿的数量级,那么这个错误对于任何熟悉二进制的人来说都是显而易见的;写107377418241073714824而不是 1073741824而且错误远没有那么明显。

基本上,它归结为偏好问题,并且在某些情况下(例如位掩码)易于阅读。

关于java - 为什么在为变量设置值时使用位移位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21637752/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com