计算机编程是为了解决实际问题,而实际问题中会存在不同类别的数据,因此,每种编程语言都会提供不同的数据类型。数据类型规定某类数据在计算机中的存储和运算规则。Java有两种数据类型,即基本数据类型和引用数据类型。其中基本数据类型又分为八种,六种数值类型,一种字符类型和一种布尔类型;引用数据类型分为数组、类和接口,如图2-1所示。
图2-1 Java数据类型
整数类型用来存储整数数值。可以是正数,也可以是负数。整型数据在Java程序中有3种表示形式,分别为十进制、八进制和十六进制。
十进制:十进制的表现形式大家都很熟悉,例如15、309、27。
八进制:八进制必须以0开头,如0123(转换成十进制数为83)。
十六进制:十六进制必须以0x开头,如0x25(转换成十进制数为37)。
整型数据根据所占内存大小的不同,可分为byte、short、int和long四种类型。它们具有不同的取值范围,如表2-1所示。
表2-1 整数类型
下面演示以上几种数据类型的使用方法。
【例2-1】定义不同的整数类型变量并赋值,实例代码如下。
byte a = 100, b = -50; //定义byte型变量a、b
short s = 1000, r = -20000; //定short型变量s、r
int x = 100000, y = -200000; //定义int型变量x、y
long a = 100000L, b = -100000000L; //定义long型变量a、b
在定义上述变量时,要注意变量的取值范围,超出取值范围就会出错。特别地,对于long型值需要在数字后加L或l。理论上不分大小写,但是若写成l容易与数字1混淆,不容易分辩,所以最好大写。
浮点类型表示有小数部分的数字。Java语言中浮点类型分为单精度浮点类型(float)和双精度浮点类型(double)。它们具有不同的取值范围,如表2-2所示。
表2-2 浮点型数据类型
在默认情况下,小数都被看作double型,若使用float型小数,则需要在小数后面添加F或f。可以使用后缀d或D来明确表明这是一个double类型数据,不加d不会出错,但声明float型变量时如果不加f,系统会认为变量是double类型而出错。下面举例讲解浮点型变量的定义。
【例2-2】定义浮点型变量,实例代码如下。
float x = 100.23f;
double y1 = 32.12d;
double y2 = 123.45;
在定义上述变量时,要注意变量的取值范围,超出取值范围就会出错。
字符类型(char)用于存储单个Unicode字符,占用16位(两个字节)的内存空间。在定义字符型变量时,要以单引号表示,如's'表示一个字符。而"s"则表示一个字符串。虽然只有一个字符,但由于使用双引号,它仍然表示字符串,而不是字符。
下面举例说明使用char关键字可定义字符变量。
【例2-3】声明字符型变量,实例代码如下。
char c1 = 'a';
同C和C++语言一样,Java语言也可以把字符作为整数对待,由于字符'a'在Unicode表中的排序位置是97,因此允许将上面的语句写成如下代码。
char c1 = 97;
由于Unicode编码采用无符号编码,可以存储65536个字符(0x0000~0xffff),所以Java中的字符几乎可以处理所有国家的语言文字。若想得到一个0~65536之间的数所代表的Unicode表中相应位置上的字符,也必须使用char型显式转换。
有些字符(如回车符)不能通过键盘录入字符串中。针对这种情况,Java提供了转义字符,以反斜杠(\)开头,将其后的字符转变为另外的含义,例如'\n'(换行)、'\b'(退格)、'\' '(单引号)、'\t'(水平制表符)。
注意事项 用双引号引用的文字,是字符串而不是原始类型。它是一个类(class)String,被用来表示字符序列。字符本身符合Unicode标准,且上述char类型的转义字符适用于String。
布尔类型又称逻辑类型。通过关键字boolean定义布尔类型变量,只有true和false两个值,分别代表布尔逻辑中的“真”和“假”。布尔类型通常被用在流程控制中作为判断条件。布尔类型变量的默认值是false。
【例2-4】声明boolean型变量,实例代码如下。
boolean b1; //定义布尔型变量b1,默认值是false
boolean b2 = true; //定义布尔型变量b2,并赋给初值true
注意事项 和C语言不同,在Java语言中,布尔值不能与整数类型进行转换。