【问题标题】:byte[] array in Java(size declaration) [duplicate]Java中的字节[]数组(大小声明)[重复]
【发布时间】: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。

标签: java arrays


【解决方案1】:

这与数组大小无关。单独打印这些数字,或更重要的是,以二进制形式打印。

^ 是 XOR 位运算符,不能替代 Math.pow

或者如 cmets 中所述,2 的幂可以使用不同的位运算符完成,即左移 <<,其计算速度将比 Math.pow 更快

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多