所有Java
虚拟机中使用的数据都有确定的数据类型,数据类型和操作都在Java
虚拟机规范中严格定义。Java
中的数据类型分为原始数据类型 (primitive types
)和引用数据类型(reference type
)。引用类型依赖于实际的对象,但不是对象本身。原始数据类型不依赖于任何东西,它们就是本身表示的数据。
所有Java
程序语言中的原始数据类型,都是Java
虚拟机的原始数据类型,除了布尔型(boolean
)
。当编译器将Java
源代码编译为字节码时,使 用整型(int
)或者字节型 (byte
)去表示布尔型。在Java
虚拟机中使用整数0
表示布尔型的false
,使用非零整数表示布尔型的true
,布尔数组被表示为字节数组,虽然它 们可能会以字节数组或者字节块(bit
fields
)保存在堆中。
除了布尔型,其它的原始类型都是Java
虚拟机中的数据类型。在Java
中数据类型被分为:整形的byte
,short
,int
,long
;char
和浮点型的float
,double
。Java
语言中的数据类型在任何主机上都有同样的范围
。
在Java
虚拟机中还存在一个Java
语言中不能使用的原始数据类型----
返回值类型(return value
)
。这种类型被用来实现Java
程序中的“finally classes”
,具体的参见18
章的“Finally Classes”
。
引用类型可能被创建为:类类型(class type
),接口类型(interface type
),数组类型(array type
)。他们都引用被动态创建的对象。当引用类型引用null
时,说明没有引用任何对象。
Java
虚拟机规范只定义了每一种数据类型表示的范围,没有定义在存储
时每种类型占用的空间。他们如何存储
由Java
虚拟机的实现者自己决定
。