官方的定义是这样的:
boolean: The boolean data type has only two possible values: true and false. Use this data type for simple flags that track true/false conditions. This data type represents one bit of information, but its "size" isn't something that's precisely defined.
大致的意思是说布尔值只有true/false,但是其大小并不是精确确定的。
在Java虚拟机规范中,有相关的说明
- boolean值在编译之后都使用Java虚拟机中的int数据类型来代替,而int是4个字节,那么boolean值就是4个字节。
- boolean类型数组的访问与修改共用byte类型数组的baload和 bastore指令,因为两者共用,只有两者字节一样才能通用呀,所以byte数组中一个byte是1个字节,那么boolean数组中boolean是1个字节。
虽然规范如此,但具体的实现还是要看Java虚拟机是否遵守此规范。也就是说,一个字节或四个字节都是有可能的。