关注一段代码

时间:2017-02-05 11:07:57

标签: java

我正在查看github上的一个开源项目,我在Java中找到了以下代码行,

static byte[] byteArray = new byte[1 << 11];

这里我们知道1&lt;&lt; 11只不过是2048,所以我可以通过给出长度= 2048来直接初始化数组,

static byte[] byteArray = new byte[2048];

然后为什么它写成1&lt;&lt; 11而不是2048直接。

1 个答案:

答案 0 :(得分:5)

使用逐位操作的原因是要明确这是2的幂。我看到人们混淆常数。例如8096是8192和4096的组合。

我更喜欢使用<< 10<< 20来获取KB和MB。例如2 << 10

2 KB