Java中的基本数据类型占多少内存空间?

Java中的基本数据类型占多少内存空间?

  • byte: 8位 1字节
  • char: 16位 2字节
  • short 16位 2字节
  • int 32位 4字节
  • float: 32位 4字节
  • long: 64位 8字节
  • double: 64位 8字节
  • boolean: 32位 4字节,在数组中时 8位 1字节

为什么boolean类型特殊?

为什么 boolean 类型在单独使用占4个字节,而存储到boolean数组中,每个元素只占1个字节.

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

主注: Oracle 的jdk按这个规范来,但是其他虚拟机版本不一定了,会综合考虑运算效率与储存空间两方面的性能.

为什么在编译之后boolean都使用Java虚拟机中的int数据类型来代替?

因为计算机完成寻址操作的时候,是以字节为最小单位进行的。也就是说每次要读取内存中数据的时候,最小只能精确到1个字节,不能单独读取某个位上的信息。如果boolean类型的变量的值只占1个位,计算机每次读取到1个字节的信息,里面会包含8个boolean变量的值

boolean 类型的总结:

  1. boolean 类型被编译成 int 类型来使用,占 4 个 byte (字节)。
  2. boolean 数组被编译成 byte 数组类型,每个 boolean 数组成员占 1 个 byte (字节)。
  3. 在 Java 虚拟机里,1 表示 true ,0 表示 false 。
  4. 这只是 Oracle Java 虚拟机的建议。
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值