JVM之数据类型

1.概述

Java虚拟机的数据类型可分为两大类:原始类型(Primitive Types,也称为基本类型)和引用类型(Reference Types)。
Java虚拟机用不同的字节码指令来操作不同的数据类型 。

2.原始类型

原始类型是最基本的元素,用于构成复杂的引用类型。与世间万物一样,都是由最基本的化学元素组合而成。

原始类型又分为三类:数值类型(Numberic Types)、布尔类型(Boolean Type)、ReturnAddress类型;数值类型又可以细化为整型(Integral Types)和浮点型(Floating-Point Types)。

整型
  • byte:8位 有符号 二进制补码整数,取值范围[-27,27-1],默认值为零;

  • short:16位 有符号 二进制补码整数,取值范围[-215,215-1],默认值为零;

  • int:32位 有符号 二进制补码整数,取值范围[-231,231-1],默认值为零;

  • long:64位 有符号 二进制补码整数,取值范围[-263,263-1],默认值为零;

  • char:16位 无符号 UTF-16编码Unicode值,取值范围[0,65535]默认值为null('\u0000');

浮点型
  • float:32位 单精度浮点数集合,默认值正数零;

  • double:64位 双精度浮点数集合,默认值为正数零;

布尔型
  • boolean [1] :取值范围[true,false],默认值为false;

returnAddress类型
  • returnAddress [^2]:表示一条字节码指令的操作码,在JVM支持的原始类型中只有returnAddress类型不能直接与Java语言的数据类型对应的。

引用类型

Java虚拟机有三种引用类型:类类型(Class Types)、数组类型(Array Types)、接口类型(Interface Types),分别由类实例、数组实例及实现了某个接口的类实例或数组实例动态创建。此外,还有一个特殊值null,不指向任何对象时,引用类型的值就是null,同时,null也是引用类型的默认值。

对于数组类型,还包含一个单一维度的组件类型(Component Type),组件类型可以是数组、原始类型、类类型或者接口类型。当组件类型是数组类型时,继续重复取这个数组的组件类型,最后一层组件类型一定是非数组,这也是该数组类型的元素类型(Element Type)。这也是多维数组的实现形式。


    1. 在Java语言中涉及到boolean类型值的运算,在编译后都是用Java虚拟机的int(32位)数据类型来代替;boolean的数组类型的访问有修改共用byte(8位)类型数组的字节码指令。 

posted on 2016-11-24 21:05  duanxz  阅读(2163)  评论(0编辑  收藏  举报