![Java从入门到精通(第6版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/451/47217451/b_47217451.jpg)
3.2 基本数据类型
在Java中有8种基本数据类型来存储数值、字符和布尔值,如图3.1所示。
![](https://epubservercos.yuewen.com/B2E6E6/26581673609259306/epubprivate/OEBPS/Images/Figure-P47_68843.jpg?sign=1739351767-7PwnLRHhxDUskgkuhntogNjCdJ5ECFNj-0-5719d825e85a27cec92eda577cc6b967)
图3.1 Java基本数据类型
3.2.1 整数类型
整数类型简称整型,用来存储整数数值,即没有小数部分的数值。可以是正数,也可以是负数。整型数据根据它所占内存大小的不同,可分为byte、short、int和long 4种类型。它们具有不同的取值范围,如表3.1所示。
表3.1 整型数据类型
![](https://epubservercos.yuewen.com/B2E6E6/26581673609259306/epubprivate/OEBPS/Images/Figure-T47_68958.jpg?sign=1739351767-Hzr7aUSX4eK7gMWAmiraCldfqTMpSoYL-0-b958f84163c478761fb78b7646a0a072)
下面分别对这4种整型数据类型进行介绍。
1.int型
定义int型变量有以下4种语法:
![](https://epubservercos.yuewen.com/B2E6E6/26581673609259306/epubprivate/OEBPS/Images/Figure-P48_68959.jpg?sign=1739351767-mU7CbxOApbVdvB6oIKRviKxHOWz8gPZY-0-e784880a7df4d12829fab9bf2a51a523)
int变量在内存中占4字节,也就是32位bit,在计算机中bit是由0和1来表示的,所以int型值5在计算机中是这样显示的:
00000000 00000000 00000000 00000101
int型是Java整型值的默认数据类型。当对多个尚未定义数据类型的整数做运算时,运算的结果将默认为int类型。例如,下面这行代码:
System.out.println(15 + 20); //输出35
等同于如下代码:
![](https://epubservercos.yuewen.com/B2E6E6/26581673609259306/epubprivate/OEBPS/Images/Figure-P48_68963.jpg?sign=1739351767-B4BgVd0PYvzavlphPnEo9aOF3U62Wg1f-0-6e0626ae0de02f14c89d903df9da25c7)
2.byte型
byte型的定义方式与int相同。定义byte类型变量,代码如下:
byte a; byte a, b, c; byte a = 19, b = -45;
3.short型
short型的定义方式与int相同。定义short类型变量,代码如下:
![](https://epubservercos.yuewen.com/B2E6E6/26581673609259306/epubprivate/OEBPS/Images/Figure-P48_68965.jpg?sign=1739351767-hdwjGOCAkc36Y9tdBRKy3Q0HzV0JqDQu-0-22eefb72fe68532b3c4fc9c19a251f69)
4.long型
由于long型的取值范围比int型大,且属于高精度数据类型,所以在赋值时要和int型做出区分,需要在整数后加L或者l(小写的L)。定义long类型变量,代码如下:
![](https://epubservercos.yuewen.com/B2E6E6/26581673609259306/epubprivate/OEBPS/Images/Figure-P48_68966.jpg?sign=1739351767-8c2rHZgXbUzrIv8IH1fmQI5Cw59RKaq3-0-891b7d4f79b05e288be0721ca26a629b)
注意
整数在Java程序中有3种表示形式,分别为十进制、八进制和十六进制:
(1)十进制:十进制的表现形式大家都很熟悉,如120、0、-127。除了数字0,不能以0作为其他十进制数的开头。
(2)八进制:如0123(转换成十进制数为83)、-0123(转换成十进制数为-83)。八进制数必须以0开头。
(3)十六进制:如0x25(转换成十进制数为37)、0Xb01e(转换成十进制数为45086)。十六进制数必须以0X或0x开头。
3.2.2 浮点类型
浮点类型简称浮点型,用来存储含有小数部分的数值。Java语言中浮点类型分为单精度浮点类型(float)和双精度浮点类型(double),它们具有不同的取值范围,如表3.2所示。
表3.2 浮点型数据类型
![](https://epubservercos.yuewen.com/B2E6E6/26581673609259306/epubprivate/OEBPS/Images/Figure-T49_68968.jpg?sign=1739351767-9UESedPuQ63qPkaDNDAxdIzZh0uvXR5d-0-da2d8e2a822807d70499baad83d4f529)
在默认情况下小数都被看作double型,若想使用float型小数,则需要在小数后面添加F或f。另外,可以使用后缀d或D来明确表明这是一个double类型数据,但加不加d或D并没有硬性规定。而定义float型变量时,如果不加F或f,系统会认为是double类型数据,进而出错。定义浮点类型变量,代码如下:
![](https://epubservercos.yuewen.com/B2E6E6/26581673609259306/epubprivate/OEBPS/Images/Figure-P49_68971.jpg?sign=1739351767-MKA2cta5K3iRdaSDZkn0uszxqVWfLKRY-0-3545911cbcb72d4e6d3f5332b3f50f10)
误区警示
浮点值属于近似值,在系统中运算后的结果可能与实际有偏差。
【例3.2】根据身高体重计算BMI指数(实例位置:资源包\TM\sl\3\2)
创建BMIexponent类,声明double型变量height来记录身高,单位为米;声明int型变量weight记录体重,单位为千克;根据BMI=体重/(身高×身高)计算BMI指数。实例代码如下:
![](https://epubservercos.yuewen.com/B2E6E6/26581673609259306/epubprivate/OEBPS/Images/Figure-P49_68970.jpg?sign=1739351767-9qyKgiOFYjfkzt5pYUHj1IgcneJJiB55-0-1b7351a9a313c4c073356f4d011d9cad)
运行结果如下:
![](https://epubservercos.yuewen.com/B2E6E6/26581673609259306/epubprivate/OEBPS/Images/Figure-P50_68983.jpg?sign=1739351767-CsqxDbs0dPCb1TzAKZ76Cc54hVBFjWRI-0-7f40b27e14c1f91c00055751888e5441)
3.2.3 字符类型
1.char型
字符类型(char)用于存储单个字符,占用16位(两个字节)的内存空间。在定义字符型变量时,要以单引号表示,如's'表示一个字符。但是"s"则表示一个字符串,虽然只有一个字符,但由于使用双引号,它仍然表示字符串,而不是字符。
使用char关键字可定义字符变量,其语法如下:
char x = 'a';
由于字符a在Unicode表中的排序位置是97,因此允许将上面的语句写成:
char x = 97;
同C和C++语言一样,Java语言也可以把字符作为整数对待。由于Unicode编码采用无符号编码,可以存储65536个字符(0x0000~0xffff),所以Java中的字符几乎可以处理所有国家的语言文字。若想得到一个0~65536的数所代表的Unicode表中相应位置上的字符,也必须使用char型显式转换。
【例3.3】查看字符与Unicode码互转的结果(实例位置:资源包\TM\sl\3\3)
在项目中创建类Gess,编写如下代码,将Unicode表中某些位置上的字符以及一些字符在Unicode表中的位置在控制台上输出。
![](https://epubservercos.yuewen.com/B2E6E6/26581673609259306/epubprivate/OEBPS/Images/Figure-P50_68986.jpg?sign=1739351767-VmsL33EDprXolZSv8wJRAT4j8RIOUbOZ-0-47187985f114e8d0bffe051e59f2949c)
运行结果如下:
d在Unicode表中的顺序位置是:100 @在Unicode表中的顺序位置是:64 Unicode表中的第23045位是:娅 Unicode表中的第45213位是:?
String类型为字符串类型,可以用来保存由多个字符组成的文本内容,其用法与字符类型类似,但文本内容需要用双引号标注。关于字符串的详细用法请参考本书第10章内容。
2.转义字符
转义字符是一种特殊的字符变量,它以反斜杠“\”开头,后跟一个或多个字符。转义字符具有特定的含义,不同于字符原有的意义,故称“转义”。例如,printf函数的格式串中用到的“\n”就是一个转义字符,意思是“回车换行”。Java中的转义字符如表3.3所示。
表3.3 转义字符
![](https://epubservercos.yuewen.com/B2E6E6/26581673609259306/epubprivate/OEBPS/Images/Figure-T51_68991.jpg?sign=1739351767-BbXx7R95k5l3BDWX5pFQqlN5KpVnb80w-0-1935bf1bfd8ffcba42ec669e402aa7f0)
将转义字符赋值给字符变量时,与字符常量值一样需要使用单引号。
【例3.4】输出'\'字符和'★'字符(实例位置:资源包\TM\sl\3\4)
'\'字符的转移字符为'\\','★'字符的Unicode码为2605,实例代码如下:
![](https://epubservercos.yuewen.com/B2E6E6/26581673609259306/epubprivate/OEBPS/Images/Figure-P51_68989.jpg?sign=1739351767-pYn33UWUDLAFd3Dnw1k55wJKwdN5wZx1-0-0d4896067c73c143bee1ba3321c96212)
运行结果如下:
\ ★
3.2.4 布尔类型
布尔类型又称逻辑类型,简称布尔型,通过关键字boolean来定义布尔类型变量。布尔类型只有true和false两个值,分别代表布尔逻辑中的“真”和“假”。布尔值不能与整数类型进行转换。布尔类型通常被用在流程控制中,作为判断条件。定义布尔类型变量,代码如下:
![](https://epubservercos.yuewen.com/B2E6E6/26581673609259306/epubprivate/OEBPS/Images/Figure-P52_68993.jpg?sign=1739351767-JPHxkRjwDEafot73WbFxIJiKJXvkY4Xe-0-434c612f9d7e07a3d202ab7a0da8c996)
编程训练(答案位置:资源包\TM\sl\3\编程训练)
【训练1】统计粮仓的粮食 一个圆柱形粮仓,底面直径为10米,高为3米,该粮仓体积为多少立方米?如果每立方米屯粮750千克,该粮仓一共可储存多少千克粮食。
【训练2】谁该缴税 员工a与员工b的月薪分别为3000元和4500元,判断哪位员工需要缴纳个人所得税,哪位员工不需要缴纳个人所得税。(假设工资、薪金所得的个税起征点为3500元)