代码之家  ›  专栏  ›  技术社区  ›  JoeCool

Java虚拟机的终结

  •  37
  • JoeCool  · 技术社区  · 17 年前

    Java在其虚拟机中使用什么字节序?我记得在某个地方读到它取决于它运行的物理机器,然后在我读到的其他地方,我相信它总是大端序。哪个是正确的?

    2 回复  |  直到 17 年前
        1
  •  30
  •   coobird    12 年前

    class

    自 The Java Virtual Machine Specification, Java SE 7 Edition , Chapter 4: The class File Format

    64位量由下式构造 阅读2、4和8 按照大端序,其中高位 字节优先。

    自 Java虚拟机规范,Java SE 7版 , Section 2.11: Instruction Set Summary

    如果操作数在中超过一个字节 大小,然后以大端序存储 例如,一个无符号的16位索引 局部变量存储为两个 byte1 和 byte2 ,这样 它的价值是 (byte1 << 8) | byte2 .

    所以,是的,我认为可以说Java虚拟机使用大端序。

        2
  •  17
  •   Tom Hawtin - tackline    17 年前

    通常很难判断机器在下面做什么,因为它被虚拟机抽象了。你不能投 short[] byte[] 就像你在C和C++中一样。 java.nio.ByteOrder.nativeOrder() 应该能给你提供潜在的血管紧张素。使用非字节NIO缓冲区时,匹配字节数非常有用。