当前位置: 首页 > news >正文

Java基本类型所占字节简述

类型分类所占字节取值范围
boolean布尔型1bit0 false、 1 true   (1个bit 、1个字节、4个字节)
char

​字符型(Unicode字符集中的一个元素)​

2字节-32768~32767(-2的15次方~2的15次方-1)
byte整型1字节-128~127(-2的7次方~2的7次方-1)
short整型2字节-32768~32767(-2的15次方~2的15次方-1)
int整型4字节-2147483648~2147483647(-2的31次方~2的31次方-1)
long整型8字节-9223372036854774808~9223372036854774807(-2的63次方~2的63次方-1)
float浮点型4字节

3.402823e+38~1.401298e-45  和

-3.402823e+38~-1.401298e-45

(e+38 表示乘以10的38次方,而e-45 表示乘以10的负45次方)

double浮点型8字节

1.797693e+308~4.9000000e-324  和

-1.797693e+308~-4.9000000e-324(同上)

Java编程语言支持的八种原始数据类型是:

  • byte:byte数据类型是8位带符号的二进制补码整数。最小值为-128,最大值为127(含)。的byte数据类型可以是在大型保存存储器有用 阵列,其中存储器的节省实际上重要的。它们也可以用于int限制其位置的地方,以澄清您的代码;变量范围有限的事实可以作为文档的一种形式。
  • short:short数据类型是一个16位带符号的二进制补码整数。最小值为-32,768,最大值为32,767(含)。与一样byte,也适用相同的准则:在实际short需要节省内存的情况下,可以使用a来以大阵列保存内存。
  • int:默认情况下,int数据类型是32位带符号的二进制补码整数,其最小值为-231,最大值为231 -1。在Java SE 8和更高版本中,可以使用int数据类型表示无符号的32位整数,其最小值为0,最大值为2 32 -1。使用Integer类可将int数据类型用作无符号整数。有关更多信息,请参见“数字类”部分。像静态方法compareUnsigned,divideUnsigned等已被添加到 Integer类,以支持算术运算的无符号整数。
  • long:long数据类型是64位二进制补码整数。带符号的long的最小值为-263,最大值为263 -1。在Java SE 8和更高版本中,可以使用long数据类型表示无符号的64位长,其最小值为0,最大值为2 64 -1。当您需要的值范围比所提供的宽时,请使用此数据类型int。该 Long班还包含方法,如compareUnsigned,divideUnsigned等长,以支持算术运算的无符号。
  • float:float数据类型是单精度32位IEEE 754浮点。其值的范围超出了本文的讨论范围,但在Java语言规范的“ 浮点类型,格式和值”部分中进行了指定。与针对byte和的建议一样,如果您需要将内存保存在大的浮点数数组中short,请使用float(而不是double)。永远不要将这种数据类型用于精确值,例如货币。为此,您将需要使用 java.math.BigDecimal类。 数字和字符串覆盖BigDecimal以及Java平台提供的其他有用的类。
  • double:double数据类型是双精度64位IEEE 754浮点数。其值的范围超出了本文的讨论范围,但在Java语言规范的“ 浮点类型,格式和值”部分中进行了指定。对于十进制值,此数据类型通常是默认选择。如上所述,永远不要将这种数据类型用于精确值,例如货币。
  • 布尔值:boolean数据类型只有两个可能的值:true和false。将此数据类型用于跟踪真/假条件的简单标志。这种数据类型代表一小部分信息,但是其“大小”并不是精确定义的。
  • char:char数据类型是单个16位Unicode字符。它的最小值为’\u0000’(或0),最大值为’\uffff’(或65,535,包括端值)。

boolean究竟占几个字节?

1、1个bit(1/8个字节):
由于boolean类型的值只有true和false两种逻辑值,在编译后会使用1和0来表示,这两个数在内存中按位运算,仅需1位(bit)即可,位是计算机中最小的存储单位。
2、1个字节
虽然编译后1和0只需占有1位空间,但是由于计算机存储数据的最小单位是1个字节,因此boolean类型的值在实际存储的时候是用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个字节。

从《Java虚拟机规范》中我们看到,虚拟机使用int来代替boolean,这样岂不是更加浪费内存空间了吗?经过查阅资料发现,这是由于计算机CPU所造成的,对于当下32位的处理器(CPU)来说,一次处理数据是32位(这里不是指的是32/64位系统,而是指CPU硬件层面),具有高效存取的特点。

总结: boolean单个占4个字节,boolean数组1个字节,Java规范未明确定义,具体要看虚拟机,而虚拟机又要看处理器(CPU)。

http://www.lryc.cn/news/26466.html

相关文章:

  • Linux vi常用操作
  • Unicode(宽字节)、ANSI(多字节)
  • STM32实战之LED循环点亮
  • 智慧厕所智能卫生间系统有哪些功能
  • 【网络】套接字 -- TCP
  • NDK C++ map容器
  • linux(Centos)安装docker
  • Delphi 中 FireDAC 数据库连接(处理错误)
  • 算法小抄3-理解使用Python容器之列表
  • Vue3中watch的value问题
  • 【线性筛+DP】最大和
  • openpnp - configure - 丢弃(Discard)位置的设置
  • java Object 万字详解 (通俗易懂)
  • Java并发简介(什么是并发)
  • 团队API管理工具-YAPI
  • 学习记录 --- Pytorch优化器
  • Flink State 状态后端分析
  • 和年薪30W的阿里测开工程师聊过后,才知道我的工作就是打杂的...
  • C#开发的OpenRA的界面布局数据加载
  • 并查集结构
  • 全国CSM敏捷教练认证将于2023年3月25-26开班,报名从速!
  • JavaEE进阶第六课:SpringBoot ⽇志⽂件
  • 外置MOS管平均电流型LED降压恒流驱动器
  • python+pytest接口自动化(6)-请求参数格式的确定
  • 开发手册——一、编程规约_3.代码格式
  • 十七、Django-restframework之序列化器(二)
  • python GUI图形化编程-----wxpython
  • 【Python 】yyyy-MM-dd HH:mm:ss 时间格式 时间戳 全面解读超详细
  • 【C++】C++11 异常
  • 关于Thread.start()后的困惑、imap