1.3.3 数据类型的定义

Java语言规范中还定义了Java的数据类型。根据Java 1.7的规范,Java的数据类型分为原始数据类型和引用数据类型。原始数据类型又分为数字型和布尔型。数字型又有byte、short、int、long、char、float、double。注意,在这里char被定义为整数型,并且在规范中明确定义:byte、short、int、long分别是8位、16位、32位、64位有符号整数,而char为16位无符号整数,表示UTF-16的字符。布尔型只有两种取值:true和false。而对于float和double,规范中规定,它们是满足IEEE 754的32位浮点数和64位浮点数。

注意:在Java语言中,char占2字节,而不是C语言中的1字节。从这点上看,Java的国际化在语言底层就提供了强有力的支持。

此外,规范还定义了各类数字的取值范围、初始值,以及能够支持的各种操作。以整数为例,比较运算、数值运算、位运算、自增自减运算等都在规范中有描述。

除了基本数据类型,引用数据类型也是Java重要的组成部分,引用数据类型分为3种:类或接口、泛型类型和数组类型。

提醒:引用类型和原始类型在Java的处理中是截然不同的,尤其对于它们的“相等”操作。

【示例1-1】在Java语言规范中,有一个简短的示例,说明了引用类型和原始类型的区别:

上述程序将输出:

从上述输出可以看出,对于原始数据类型int,i1和i2表示不同的变量,两者毫无关系,但是对于v1和v2,它们都指向唯一一个由new关键字创建的Value对象。

由于本书并非讲解Java语言,因此对于这部分内容点到即止,有兴趣的读者可以参考Java语言规范的第4章“Types,Values,and Variables”。