Java基本类型在Java虚拟机中的表现

Java 的基本类型

Java除了对象外,还有八个基本类型来支持数值计算;使用基本类型能够在执行效率以及内存使用两方面提升软件性能。

在这里插入图片描述

  • 如图示,前面的值域被后面的值域所包含,因此由前面的基本类型转换为后面的强制类型不需要强制转换。尽管其默认值看起来不同,但在内存中都是0。
  • boolean 和 char 是唯二的无符号类型。在遵守规范的情况下,前者取值在 0 或 1 之间,猴子则在 [0,65535]。

基本类型在Java虚拟机中的实现

例:Java 虚拟机的 boolean 类型
  • Java 语言规范和Java 虚拟机规范对 boolean 类型的定义:
    在Java语言规范中,boolean类型的值只有两者可能(true/false),这两者不能被虚拟机直接使用。
    在Java虚拟机规范中,boolean类型被映射成了int类型(true —> 1,false —> 0)。
浮点类型

浮点类型比较特殊。基于它的运算或比较,需要考虑 +0.0F、-0.0F 以及 NaN 的情况。

  • Java 的浮点类型采用 IEEE 754 浮点数格式。以 float 为例,浮点类型通常有两个 0,+0.0F 以及 -0.0F。尽管它们的内存数值不同,但是在 Java 中 +0.0F == -0.0F 会返回真。
  • 可以定义浮点数中的正无穷及负无穷。正无穷就是任意正浮点数(不包括 +0.0F)除以 +0.0F 得到的值,而负无穷是任意正浮点数除以 -0.0F 得到的值。在 Java 中,正无穷和负无穷是有确切的值,在内存中分别等同于十六进制整数 0x7F800000 和 0xFF800000。
  • [0x7F800001, 0x7FFFFFFF]和[0xFF800001, 0xFFFFFFFF]对应的都是 NaN。当然,一般我们计算得出的 NaN,比如说通过 +0.0F/+0.0F,在内存中应为 0x7FC00000。这个数值,我们称之为标准的 NaN,而其他的我们称之为不标准的 NaN。
  • NaN 有一个特性:除了“!=”始终返回 true 之外,所有其他比较结果都会返回 false。
基本类型在栈与堆中的比较。
  • 除 long 和 double 外,其他基本类型与引用类型在解释执行的方法栈帧中占用的大小是一致的,但它们在堆中占用的大小却不同。
  • 在将 boolean、byte、char 以及 short 的值存入字段或者数组单元时,Java 虚拟机会进行掩码操作。在读取时,Java 虚拟机则会将其扩展为 int 类型。(堆中)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值