javaboolean字节数,bool类型占几个字节

  javaboolean字节数,bool类型占几个字节

  如何解决写爬虫IP受阻的问题?立即使用。

  为什么问这个问题?首先,在Java定义的八种基本数据类型中,除了其他七种类型,布尔类型并没有具体的占用字节数,因为虚拟机没有布尔这种类型,布尔类型编译后会用其他数据类型表示。布尔型占用多少字节?带着疑问,随便在网上搜一下,答案五花八门。基本上有以下几种:

  1,1位

  原因是布尔值只有两个逻辑值,真和假,编译后会用1和0表示。这两个数只需要1位存储在内存中,内存是计算机最小的存储单位。

  2,1字节

  原因是虽然1和0编译后只需要占用1位空间,但计算机处理数据的最小单位是1字节,1字节等于8位。实际存储空间为:1字节最低位用于存储,其余7位用0填充。如果值为true,存储的二进制为:0000001;如果为假,存储的二进制数为:0000000。

  3,4个字节

  原因是《Java虚拟机规范》这本书里的描述:“虽然定义了数据类型boolean,但是它只提供了非常有限的支持。Java虚拟机中没有专门针对布尔值的字节码指令。Java语言表达式操作的布尔值在编译后的Java虚拟机中被替换为int数据类型,布尔数组将被编码成Java虚拟机的字节数组,每个元素8位。”这样我们就可以得出结论,boolean类型单独占4个字节,数组占1个字节。

  很明显,第三种说法更准确,那么虚拟机为什么要用int而不是boolean呢?为什么不用byte或者short?它将节省更多的内存空间。大多数人自然会这么想,我也有这个疑问。查阅资料后发现,之所以使用int,是因为对于目前的32位处理器(CPU)来说,一次处理数据是32位(这里不是指32/64位系统,而是CPU硬件级别),具有高效访问的特点。

  最后总结:

  根据http://docs . Oracle . com/javase/tutorial/Java/nutsandbolts/data types . html官方文档的描述:

  boolean:boolean数据类型只有两个可能的值:true和false。将此数据类型用于跟踪真/假条件的简单标志。这种数据类型代表一位信息,但是它的“大小”没有精确的定义。

  布尔类型:布尔数据类型只有两个可能的值:true和false。使用此数据类型作为简单的标记来跟踪真/假条件。这种数据类型代表了这些信息,但是它的“大小”没有精确定义。

  可以看出,布尔型并没有给出确切的定义。《Java虚拟机规范》给出了布尔数组的4字节和1字节的定义,取决于虚拟机是否按照规范实现,所以1字节和4字节都有可能。其实这是计算效率和存储空间的博弈,两者都很重要。

  这是布尔类型在Java中占用多少字节的细节。更多请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: