java字节是如何存储的?

java字节是如何存储的?,java,byte,primitive,Java,Byte,Primitive,不久前,我读到java字节是一个8位的字节,在内部存储为int。我似乎没有在网上找到任何证实这一点的信息 感谢您抽出时间回答我的问题 什么关于C++ char?它是存储为8位还是32位?如何存储字节(或任何其他Java值,就这一点而言)不是由JLS或JVM指定的(您会发现最接近JVM级别的抽象规范,但它仍然没有说明如何本机存储)。它通常以最适合当前硬件体系结构的方式存储,通常是32位(甚至64位)。如何存储字节(或任何其他Java值,就这一点而言)不是由JLS或JVM指定的(最接近的是JVM级别

不久前,我读到java字节是一个8位的字节,在内部存储为int。我似乎没有在网上找到任何证实这一点的信息

感谢您抽出时间回答我的问题


什么关于C++ char?它是存储为8位还是32位?

如何存储
字节(或任何其他Java值,就这一点而言)不是由JLS或JVM指定的(您会发现最接近JVM级别的抽象规范,但它仍然没有说明如何本机存储)。它通常以最适合当前硬件体系结构的方式存储,通常是32位(甚至64位)。

如何存储
字节(或任何其他Java值,就这一点而言)不是由JLS或JVM指定的(最接近的是JVM级别的抽象规范,但这还没有说明它是如何本机存储的)。它通常以最适合当前硬件体系结构的方式存储,通常是32位(甚至64位).

好吧,如果你看一看类文件中方法是如何表示的,你会注意到如果方法参数是字节、int、boolean、short或chars,那么它们将使用相同的字节码指令加载到方法框架的执行堆栈中。这意味着它们需要在方法框架中采用通常需要32位的相同大小。

对于在堆上存储字节,大多数JVM实现选择以32位存储字节,而字节数组则以每个数组条目8位存储。然而,JLS或JVM中没有规定这一点。如果您想要实现自己的JVM,您可以使用任意数量的位来存储字节,并且仍然通过Java TCK兼容性测试


也就是说:你所说的并不是一个明显的事实,但在大多数情况下仍然是正确的。

好吧,如果你看看方法在类文件中是如何表示的,你会注意到方法参数被加载到方法框架的执行堆栈中,如果它们是字节、整数、布尔值、短值或字符,则使用相同的字节码指令意味着它们需要在一个方法帧内采用通常需要32位的相同大小

对于在堆上存储字节,大多数JVM实现选择以32位存储字节,而字节数组则以每个数组条目8位存储。然而,JLS或JVM中没有规定这一点。如果您想要实现自己的JVM,您可以使用任意数量的位来存储字节,并且仍然通过Java TCK兼容性测试

所以说:你所说的并不是一个明显的真理,但大多数时候它仍然是正确的