背景

最近在复盘Java基础知识,看到基础数据类型这一章节,有一张图片是这样的。


比较好奇,为什么其他类型都有字节标识,唯独boolean没有,不是只占用1bit ~ 1位的吗 ?

找答案

出处1 ~《疯狂Java讲义(3版)》


一个boolean类型占用8位 = 1字节

出处2 ~ Java官网

1 原始类型

Primitive Data Types

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.

解释一下:

布尔数据类型只有两个可能的值:true和false。 将此数据类型用于跟踪真/假条件的简单标志。 此数据类型表示一位信息,但其“大小”不是精确定义的内容。

2 jdk 布尔类型

地址2:jdk specs文档
我对比了jdk8, jdk11 和 jdk12 对于boolean类型的说明是完全一样的,故只贴出jdk12的图

翻译一下:

虽然Java虚拟机定义了一个boolean类型,但它只为它提供了非常有限的支持。没有Java虚拟机指令专门用于对boolean值的操作。相反,Java编程语言中对boolean值进行操作的表达式被编译为使用Java虚拟机int数据类型的值。

Java虚拟机直接支持boolean数组。它的newarray指令可以创建boolean数组。使用byte数组指令baload和bastore访问和修改类型为boolean的数组。

在Oracle的Java虚拟机实现中,Java编程语言中的boolean数组被编码为Java虚拟机byte数组,每个布尔元素使用8位。

Java虚拟机使用1表示boolean数组组件的true,0表示false。其中Java编程语言布尔值由编译器映射到Java虚拟机类型int的值,编译器必须使用相同的编码。

结论

  1. boolean类型被编译为int类型,等于是说JVM里占用字节和int完全一样,int是4个字节,于是boolean也是4字节
  2. boolean数组在Oracle的JVM中,编码为byte数组,每个boolean元素占用8位=1字节
  3. (待考证)boolean数组在非Oracle JVM里面,占用字节数也许不是1字节

Java中boolean类型占几个字节,你知道吗?相关推荐

  1. java中boolean类型占几个字节

    java的基本数据类型中,boolean只有两种状态,默认值为false.取值范围是{true,false},理论上占1bit,实际上: 1.单个的boolean 类型变量在编译的时候是使用的int ...

  2. java中double类型占几个字节_java中各种数据类型占用字节数

    1字节(Byte)=8bit java的基本类型 类型 所占字节 byte 1 short 2 int 4 long 8 float 4 double 8 char 2 String中字母和汉字所占字 ...

  3. java中double类型占几个字节_面试官:Java 中有几种基本数据类型是什么?各自占用多少字节?...

    认识基本数据类型 在学习基本数据类型之前,我们先认识一下这两个单词:1.bit --位:位是计算机中存储数据的最小单位,指二进制数中的一个位数,其值为"0"或"1&quo ...

  4. 腾讯面试官问我Java中boolean类型占用多少个字节?我说一个,面试官让我回家等通知...

    来自:程序员乔戈里 ---------------第二天-------------- 什么是boolean类型,根据官方文档的描述[1]: boolean: The boolean data type ...

  5. Java中boolean类型占用多少个字节

    原文地址:http://www.cnblogs.com/wangtianze/p/6690665.html?utm_source=itdadao&utm_medium=referral --- ...

  6. Java中char类型占几个字节?

    要想弄清楚char占用几个字节,就必须了解Unicode编码机制. 早在Unicode诞生之前,就已经有很多字符集,如美国的ASCII.表示西欧语言的ISO 8859-1.中国的GB18030等. 但 ...

  7. java中float类型占4个字节,long类型占8个字节,为什么long类型能自动转换成float类型,且float类型为什么表示的范围比long类型大

    作为常识我们都知道,float型在内存中占用的是4个字节,而long型占用8个字节.单从字节数来看,long型是大于float型的.但实际上,float表示的范围却是比long要大的 float类型的 ...

  8. 2019.04.08—Java 中字母汉字占几个字节

    今天在做回顾的时候看到的问题: 为什么两个运行的结果不一样呢? 1.弄清java中的字节与字符 问题 在java中,一个字符等于多少字节?或者更详细的问:在java中,一个英文字符等于多少字节?一个中 ...

  9. c语言中布尔类型占几个字节,JAVA基本数据类型所占字节数是多少?

    byte     1字节 short    2字节 int      4字节 long     8字节 char     2字节(C语言中是1字节)可以存储一个汉字 float    4字节 doub ...

  10. Java中int为什么占四个字节?

    简单了解计算机为什么要采用二进制表示信息: 因为计算机作为一种电子计算机工具,是由大量的电子器件组成的,在这些电子器件中,电路的通断,电位的高低,用两个数字符号"1"和" ...

最新文章

  1. 【ThinkingInC++】61、非成员运算符
  2. 如何进行嵌入式系统的学习?
  3. 3秒取暖,超高颜值!冬日必备的大宇取暖器
  4. 100*100的 canvas 占多少内存?
  5. 万圣节魅惑手绘插画素材,没想到你是这样的可爱!
  6. 如何在 Mac 上的“地图”中自定地图视图?
  7. C++ using关键字作用总结
  8. 《图解算法》学习笔记之广度优先搜索(breadth-first search, BFS)
  9. html静态页面如何复用,一种前端页面模板复用的方法与流程
  10. android音标,安卓系统如何正确显示音标
  11. mysql 多数据源配置文件_Spring+MyBatis多数据源配置实现
  12. discuz php单页,Discuz! X2 自定义单页面最简单方法
  13. Corona建筑表现作品:岩石上的住宅
  14. 基于三维实景建模与CIM的数字孪生城市建设
  15. 毕业论文找文献是个问题,我直接用python把全网文献爬了一遍,这波就很舒服
  16. 2021夏魔训作业 第三天 2021-07-28
  17. android中tabview去掉下划线,TabWidget去除底部下划线
  18. Howlerjs 音频播放插件
  19. 浙江教师计算机职称考试,浙江今年不再组织职称外语统一考试 计算机照考
  20. 【Android】错误Cyclic inheritance involving(循环继承问题)

热门文章

  1. echart 自适应屏幕大小
  2. 为什么我的echarts字体样式这么丑?Echarts 柱状图、饼图 等标签、字体、样式调整
  3. 无纸化测评系统计算机考试试题,2015年9月计算机二级《Access》无纸化试卷(1)
  4. 网易微专业java高级笔记_网易微专业java高级开发工程师
  5. android 百度地图大头针,百度地图API 地理位置获取和大头针显示当前位置
  6. MySQL下载压缩包安装详细过程
  7. Gos: Armed Golang
  8. java中的switch case语句
  9. 如何计算ROI(一)
  10. 携程后台开发笔试第二题