【发布时间】:2021-05-01 08:20:02
【问题描述】:
我已经声明了 3 种不同类型的字节数组(大小不同)。请参阅每个旁边的评论,因为我无法理解 length 是如何由编译器计算的?
byte[] byteField0 = new byte[2^3];
System.out.println("bitField0 " + byteField0.length); // Gives 1 byte instead of 8?
byte[] byteField2 = new byte[2^5];
System.out.println("byteField2 " + byteField2.length); // Gives 7 bytes instead of 32?
byte[] byteField3 = new byte[8];
System.out.println("bitField3: " + byteField3.length); // Gives 8 bytes as expected
【问题讨论】:
-
^是异或运算符 (xor)。 -
你想用
<<左移得到2的幂:1 << 3是8,1 << 5是32。