Java中的数据类型分为四类八种:
1.整数型:byte,short,int,long;占用1,2,4,8个字节
2.浮点型:float,double;占用4,8个字节
3.字符型:char;占用2个字节
4.布尔型:boolean;占用1位或1个字节或4个字节
布尔型占用字节数不同的原因:
1.占用1个bit
boolean类型的值只有true和false两种,在编译后会用1和0来表示,这两个数在内存中只需要1位(bit)即可存储,位是计算机最小的单位;
2.占用1个字节
boolean类型的值编译后虽然只需占用1位空间,但计算机处理数据的最小单位是1个字节。一个字节是8位,所以实际存储空间是用1个字节的最低位存储,其他7位用0填补。如果值是true,则存储的2进制为0000 0001,如果值是false,存储的2进制为0000 0000。
3.占用4个字节
《Java虚拟机规范》中描述了Java语言表达式所操作的boolean值,在编译后都用Java虚拟机中的int类型来代替;boolean数组会被编码成Java虚拟机中的byte数组,每个boolean元素占8位。
Java虚拟机用int(4个字节*8位)来代替boolean的原因是:对于当下32位的处理器(CPU)来说,一次处理32位(这里指的不是32/64位系统,而是指CPU硬件层面),具有高效存取的特点。