美文网首页
Java虚拟机-数据类型

Java虚拟机-数据类型

作者: 贪睡的企鹅 | 来源:发表于2019-08-01 22:44 被阅读0次

    1 JVM的数据类型

    我们知道 Java 语言的类型可以分为两大类:基本类型(primitive types)和引用类型(reference types)。

    image

    1.1 基本类型

    Java 的基本类型还包括整数类型 byte、short、char、int 和 long,以及浮点类型 float 和 double,boolean。

    1.1.2 Java 基本类型的取值范围

    image

    Java 的基本类型都有对应的值域和默认值。可以看到,byte、short、int、long、float 以及 double 的值域依次扩大,而且前面的值域被后面的值域所包含。因此,从前面的基本类型转换至后面的基本类型,无需强制转换。

    1.1.2 Java 基本类型的大小

    栈帧中

    在栈帧中除了 long、double 值需要用两个变量槽单元来存储之外,其他基本类型以及引用类型的值均占用一个变量槽单元存储。也就是说,boolean、byte、char、short 这四种类型,在栈上占用的空间和 int 是一样的,和引用类型也是一样的。因此,在 32 位的 HotSpot 中,这些类型在栈上将占用 4 个字节;而在 64 位的 HotSpot 中,他们将占 8 个字节。

    堆中

    对于 byte、char 以及 short 这三种类型的字段或者数组单元,它们在堆上占用的空间分别为一字节、两字节,以及两字节,也就是说,跟这些类型的值域相吻合。

    1.2 引用类型

    Java 引用类型将其细分为四种:类、接口、数组类和泛型参数。由于泛型参数会在编译过程中被擦除,因此 Java 虚拟机实际上只有前三种。在类、接口和数组类中,数组类是由 Java 虚拟机直接生成的,其他两种在Class文件中则有对应的字节流。

    引用类型只存在于栈或方法区中大小为4个字节

    相关文章

      网友评论

          本文标题:Java虚拟机-数据类型

          本文链接:https://www.haomeiwen.com/subject/ixphdctx.html