boolean到底占几个字节?

在java 8种基本数据类型中,其中七种都有明确的长度,它们分别是,单位字节即8bit:
byte 1
short 2
int 4
long 8
float 4
double 8
char 2
对于boolean 类型呢,并没有定义。
那么我们看java虚拟机规范:

在《Java虚拟机规范》一书中的描述:“虽然定义了boolean这种数据类型,但是只对它提供了非常有限的支持。在Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达式所操作的boolean值,在编译之后都使用Java虚拟机中的int数据类型来代替,而boolean数组将会被编码成Java虚拟机的byte数组,每个元素boolean元素占8位”。

也就是说JVM规范指出boolean当做int处理,也就是4字节,boolean数组当做byte数组处理,这样我们可以得出boolean类型占了单独使用是4个字节,在数组中是确定的1个字节。

总结如下:在java规范中,并没有规定boolean类型的大小,不过在jvm规范中,指出boolean编译后为int即4字节,而数组类型中使用byte类型即1字节。
具体是几个字节取决于该虚拟机是否实现了该jvm规范。

你可能感兴趣的:(java)