话说:boolean型到底占几个字节

话说:boolean型到底占几个字节


什么?boolean型占几个字节,这话说:boolean型到底占几个字节我怎么想不起来了!!!boolean类型属于Java中的基本数据类型,按道理应该有具体的字节数的,对你想的没错,boolean是有具体的占用字节数的,但具体是多少呢?赶紧动用我1核1G的大脑

话说:boolean型到底占几个字节

哎,太卡了,将就着往下看吧! 

boolean

首先确定的是:boolean类型的数据只有两种结果true / false 是用来判断逻辑的真假。

如果你注意到在上篇 一文还吃不透Java数据类型,那就两篇 中的数据类型属性表中的boolean型属性

话说:boolean型到底占几个字节

boolean类型数据所占用的字节数在虚拟机规范中是没有明确定义,那我们再来看看Java虚拟机规范中是怎么说的:

话说:boolean型到底占几个字节

"Although the Java Virtual Machine defines a boolean type, it only provides very limited support for it. There are no Java Virtual Machine instructions solely dedicated to operations on boolean values. Instead, expressions in the Java programming language that operate on boolean values are compiled to use values of the Java Virtual Machine int data type."

“The Java Virtual Machine encodes boolean array components using 1 to represent true and 0 to represent false . Where Java programming language boolean values are mapped by compilers to values of Java Virtual Machine type int , the compilers must use the same encoding.”

话说:boolean型到底占几个字节

大意

Java虚拟机使用0表示false,1表示true来编码boolean数组的;

boolean值(true/false)在被编译后会被映射为Java虚拟机中的int类型

结论

Java虚拟机在处理boolean值的时候会根据虚拟机本身的实现,从而将(true/false) 编译映射为整数类型的一种(int、byte、short不排除其他类型),因此当boolean值被编译映射为int类型时,可以说是占用了4个字节。

但实际上,无论被编译映射成那种类型,用来表示0(false)、1(true) 的有效数只占比特位(bit)的第0位,按照一个字节8位来算,真真正正只占 1/8个字节(0.125个字节),当然这是理论层面来计算的,但通常来讲boolean的字节数还是要看编译成那种基本类型来决定的,比如映射成byte 那就占用1个字节。

总而言之,从Java虚拟机规范上层面来考虑,boolean类型数据所占字节数是由Java虚拟机的实现来决定的。

---END---

往期精彩内容:

jetbrains全家桶正版使用(更新时间:2020.11.13)