如何存储java字节?

时间:2013-11-17 15:06:44

标签: java byte primitive

前段时间我读到8字节的java字节在内部存储为int。我似乎没有在网上找到任何确认这一点的信息。

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

C ++ char怎么样?它是以8位还是32位存储?

2 个答案:

答案 0 :(得分:4)

JLS或JVMS未指定byte(或任何其他Java值)的存储(您最接近的是JVM级别的抽象规范,但这仍然没有说明它是如何存储的。) 通常以最适合当前硬件架构的方式存储,通常为32位(甚至64位)。

答案 1 :(得分:1)

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

至于在堆上存储字节,大多数JVM实现选择存储32位字节,而字节数组存储每个数组条目8位。但是,未在JLS或JVMS中指定。如果您想实现自己的JVM,可以使用任意数量的位来存储一个字节,并仍然通过Java TCK兼容性测试。

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