千锋教育-做有情怀、有良心、有品质的职业教育机构

当前位置:首页  >  IT问答库  >  Java培训就业

Java中boolean类型占⽤多少个字节

发布:Java培训 2022-04-01 15:35

Java中boolean类型占⽤多少个字节

推荐答案

  Java中boolean类型占⽤多少个字节-威哥原创系列⽂章

  ⾸先在Java中定义的⼋种基本数据类型中,除了其它七种类型都有明确的内存占⽤字节数外,就boolean类型没有给出具体的占⽤字节数,因为对虚拟机来说根本就不存在 boolean 这个类型,boolean类型在编译后会使⽤其他数据类型来表示,那boolean类型究竟占⽤多少个字节?带着疑问,随便⽹上⼀搜,答案五花⼋⻔,基本有以下⼏种:

  1、1个bit

  理由是boolean类型的值只有true和false两种逻辑值,在编译后会使⽤1和0来表示,这两个数在内存中只需要1位(bit)即可存储,位是计算机最⼩的存储单位。

  2、1个字节

  理由是虽然编译后1和0只需占⽤1位空间,但计算机处理数据的最⼩单位是1个字节,1个字节等于8位,实际存储的空间是:⽤1个字节的最低位存储,其他7位⽤0填补,如果值是true的话则存储的⼆进制为:0000 0001,如果是false的话则存储的⼆进制为:0000 0000。

  3、4个字节

  理由来源是《Java虚拟机规范》⼀书中的描述:“虽然定义了boolean这种数据类型,但是只对它提供了⾮常有限的⽀持。在Java虚拟机中没有任何供boolean值专⽤的字节码指令,Java语⾔表达式所操作的boolean值,在编译之后都使⽤Java虚拟机中的int数据类型来代替,⽽boolean数组将会被编码成Java虚拟机的byte数组,每个元素boolean元素占8位”。这样我们可以得出boolean类型占了单独使⽤是4个字节,在数组中⼜是1个字节。

  显然第三条是更准确的说法,那虚拟机为什么要⽤int来代替boolean呢?为什么不⽤byte或short,这样不是更节省内存空间吗。⼤多数⼈都会很⾃然的这样去想,我同样也有这个疑问,经过查阅资料发现,使⽤int的原因是,对于当下32位的处理器(CPU)来说,⼀次处理数据是32位(这⾥不是指的是32/64位系统,⽽是指CPU硬件层⾯),具有⾼效存取的特点。

  最后的总结:

  根据http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html官⽅⽂档的

  描述:

  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.

  布尔类型:布尔数据类型只有两个可能的值:真和假。使⽤此数据类型为跟踪真/假条件的简单标记。这种数据类型就表示这⼀点信息,但是它的“⼤⼩”并不是精确定义的。

  可以看出,boolean类型没有给出精确的定义,《Java虚拟机规范》给出了4个字节,和

  boolean数组1个字节的定义,具体还要看虚拟机实现是否按照规范来,所以1个字节、4个字节都是有可能的。这其实是运算效率和存储空间之间的博弈,两者都⾮常的重要。

JavaEE

 

最新问答资讯

01 unity用什么编程语言?unity学习难度大吗

学习 unity 语言
6020 人关注

02 python容易学吗?学好python有什么好处?

学习 python 工作 培训
5389 人关注

03 html是什么语言?html学习难吗?

学习 html 语言 可以
5062 人关注

04 c语言难学吗?c语言学好要多久?

语言 技术 学习
4733 人关注

06 学好平面设计要多久?报速成班靠谱吗?

平面 设计 学习 时间
4238 人关注

相关问题

Java和Web前端哪个前景更好

同学您好,根据您问的这个问题,Java和Web前端哪个前景更好?我们...

java培训分享:2022年学习Java有前途吗?

据相关数据统计,在2022年参加java培训机构学习java技术的人在不...

float和double的区别是什么?

float和double的区别是什么?威哥讲java原创系列⽂章 1.1 内存中...

Java中boolean类型占⽤多少个字节

  Java中boolean类型占⽤多少个字节-威哥原创系列⽂章   ⾸...

Java培训就业哪里好?

Java培训就业哪里好?培训机构很多,但是还是给大家推荐千锋Java...

学习Java就业有哪些方向?

Java作为目前的主流编程语言之一,深受各大企业欢迎,现在...

测一测
你知道多少IT梗