![Java入门很轻松(微课超值版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/857/44509857/b_44509857.jpg)
2.4 基本数据类型
Java提供了8种基本数据类型,其中6种是数值型(4种整数型,2种浮点型),2种是非数值型(字符型和布尔型),如图2-5所示。
![](https://epubservercos.yuewen.com/5D7B55/23721525401929906/epubprivate/OEBPS/Images/Figure-P33_2463.jpg?sign=1739296007-jOjVtmNgjshg8vsFtTzy2ZEleU3J5YBQ-0-5a057cbb1c02f85f43d9aac9b7226940)
图2-5 Java基本数据类型
2.4.1 整数类型
整数类型用来存储整数数值,即没有小数部分的数值。可以是正数,也可以是负数。整数类型根据它在内存中所占大小的不同,可以分为byte、short、int和long 4种类型。它们具有不同的取值范围,如表2-3所示。这4种数据类型占据的空间大小不同,取值范围也不同,但使用方法是一样的。用户可以根据不同的使用环境,选择不同的类型。
表2-3 Java中的整数类型
![](https://epubservercos.yuewen.com/5D7B55/23721525401929906/epubprivate/OEBPS/Images/Figure-T33_49046.jpg?sign=1739296007-HAJrgMlJS7tigNUp9UcrEhilyFsb5U6o-0-9ee08e275cf79a6a742520e40fbb0bc1)
☆大牛提醒☆
在给变量或常量赋值时,要注意取值范围,当赋值超过相应范围时就会出错。
1.int型
int型变量在内存中占4字节,也就是32bit(位),在计算机中bit由0和1表示,所以int型的5在计算机中是这样显示的:
00000000 00000000 00000000 00000101
int型变量声明的语法格式如下:
int 变量名=变量初值
例如,以下为int型变量声明示例。
![](https://epubservercos.yuewen.com/5D7B55/23721525401929906/epubprivate/OEBPS/Images/Figure-P34_49051.jpg?sign=1739296007-0Ay3ufWjyGyDDSQqBkRjSE3ihQq02C9n-0-eb67ce877e360c92295ba4e6f05fe288)
以下为错误的int型变量声明示例。
![](https://epubservercos.yuewen.com/5D7B55/23721525401929906/epubprivate/OEBPS/Images/Figure-P34_49052.jpg?sign=1739296007-qFrSoKW28luI9x38ytuRTHMhI3QRKI5f-0-0f7ebd89cf925f49e48a0327f81d32aa)
☆大牛提醒☆
int是Java整型值的默认数据类型,当代码使用整数赋值或输出时,都默认为int型,例如:
![](https://epubservercos.yuewen.com/5D7B55/23721525401929906/epubprivate/OEBPS/Images/Figure-P34_49054.jpg?sign=1739296007-R04kSDwkQaijyEbnkRLoNp0CUW0WwFVg-0-97b61abe0f9833d03de25a1c6a444ae0)
这行代码实现的功能与下面的代码一样。
![](https://epubservercos.yuewen.com/5D7B55/23721525401929906/epubprivate/OEBPS/Images/Figure-P34_49055.jpg?sign=1739296007-zd0DRHxJZ13Bn1uUXV6EzhbQO3N7PtFL-0-f03f315fa43c21bfb7bceec734ccc1be)
2.byte型
byte型变量的声明与int型变量相同,语法格式如下:
byte 变量名=变量初值
例如,以下为byte型变量声明示例。
![](https://epubservercos.yuewen.com/5D7B55/23721525401929906/epubprivate/OEBPS/Images/Figure-P34_49057.jpg?sign=1739296007-6N5S5v0Ip0qmyyRJSsKLuxVlCpBKFfyH-0-3eccc1f254785bbe79c1cd986f546833)
以下为错误的byte型变量声明示例。
![](https://epubservercos.yuewen.com/5D7B55/23721525401929906/epubprivate/OEBPS/Images/Figure-P34_49058.jpg?sign=1739296007-yxCitPwdwq8S9GD1YmL4TRHTx4joh09W-0-ce8a35d5cbc771807e05abe6a7ae3304)
3.short型
short型变量的声明与int型变量相同,语法格式如下:
short变量名 = 变量初值
例如,以下为short型变量声明示例。
![](https://epubservercos.yuewen.com/5D7B55/23721525401929906/epubprivate/OEBPS/Images/Figure-P34_49060.jpg?sign=1739296007-K700Wcyw5QDgLa0M9BNNkwIpz55aQbqp-0-171c0f8127f54cc0a2e98240ae994137)
以下为错误的short型变量声明示例。
![](https://epubservercos.yuewen.com/5D7B55/23721525401929906/epubprivate/OEBPS/Images/Figure-P34_49062.jpg?sign=1739296007-LA8kvQrfJ5K6uZQpLPbVWMyigQ7wzZTz-0-ad603166ad19c34cebed22587bbc3a3f)
4.long型
long型变量的取值范围比int型大,且属于高级的数据类型,为此在赋值时必须要注明长整型标识,就是用字母L或l写在数值后面,来与int型变量区分。声明的语法格式如下:
long 变量名=变量初值
例如,以下为long型变量声明示例。
![](https://epubservercos.yuewen.com/5D7B55/23721525401929906/epubprivate/OEBPS/Images/Figure-P35_49071.jpg?sign=1739296007-Uy4NGHN2yBCA8inmAWtOB9HC2Pf87NoO-0-5072f9f9261372a4de7f10273c71ed3b)
以下为错误的long型变量声明示例。
![](https://epubservercos.yuewen.com/5D7B55/23721525401929906/epubprivate/OEBPS/Images/Figure-P35_49072.jpg?sign=1739296007-AUQALXfjrH3abpFP1I1U3BbMh21DbQum-0-8701766894e43ea0a1069a37fe8144fe)
2.4.2 浮点类型
浮点型数据表示有小数部分的数字,Java中浮点型分为单精度float和双精度double两种类型,它们具有不同的取值范围,如表2-4所示。
表2-4 Java中的浮点类型
![](https://epubservercos.yuewen.com/5D7B55/23721525401929906/epubprivate/OEBPS/Images/Figure-T35_49069.jpg?sign=1739296007-aH58kNijWO4WuR9ptGOl2Vc5dzcwjblq-0-8dafe4d5f60b48c476603170ced265b0)
默认情况下小数都被看作double型,如果需要使用float型声明小数,则必须在小数后面添加标识符F/f,否则会出错。另外,可以使用后缀D或d来明确表明这是一个double型数据,但加不加D或d并没有硬性规定。以下为浮点类型变量声明示例。
float x =12.25f; double y = 2.658d; double z = 2.369;
以下为错误的float型变量声明示例。
![](https://epubservercos.yuewen.com/5D7B55/23721525401929906/epubprivate/OEBPS/Images/Figure-P35_49065.jpg?sign=1739296007-2N7SQKwy4PQVgimr79OdwzfsJ8cI0bTl-0-5c14cfbaea6e953ce0543f08c6fe337f)
☆大牛提醒☆
浮点型数据值是近似值,在系统中计算后的结果会与实际值有偏差。
【例2.4】灵活玩遍算术题。使用int、float和double类型的数据进行简单的算术运算(源代码\ch02\2.4.txt)。
![](https://epubservercos.yuewen.com/5D7B55/23721525401929906/epubprivate/OEBPS/Images/Figure-P35_49063.jpg?sign=1739296007-9PU7rB9fQ5WBeFSYsb8pllbvINpl359m-0-2d563588592252a376b765118246a22a)
运行结果如图2-6所示。
![](https://epubservercos.yuewen.com/5D7B55/23721525401929906/epubprivate/OEBPS/Images/Figure-P36_3118.jpg?sign=1739296007-IC5DFOq6XJFK8zCvrMqAiq0QxjhhtA6b-0-2e2d0d229a6bd779617bd333ed1ca69f)
图2-6 数值型数据类型运算输出结果
2.4.3 字符类型
Java可以把字符作为整数对待。由于Unicode编码采用无符号编码,可以存储65536个字符,其中最小值为\u0000(即0),最大值为\uffff (即65535),所以Java中的字符可以处理大多数国家的语言文字。不过有些字符有多种作用,这就有了转义字符的概念。
1.char型字符
字符型数据类型char是用于存储单个字符,它占用16位(2字节)的内存空间,在声明字符型变量时,要以单引号标识,如a就表示一个字符。声明char型变量,实例代码如下:
![](https://epubservercos.yuewen.com/5D7B55/23721525401929906/epubprivate/OEBPS/Images/Figure-P36_49076.jpg?sign=1739296007-fRLmF6VG9o3UjCLT419CnFkyvA4OpUUW-0-9511942061c82301b12b34d6a1a6a3bd)
如果想要得到一个0~65535的数代表Unicode表中相应位置上的字符,必须使用char型显式转换。例如:
char myChar =99; System.out.println(myChar);
输出结果为:
c
这是因为99对应的是小写字母c的Unicode编码。
char的默认值是空格,char还可以与整数做运算。例如:
char myChar = 'c',newChar; newChar = (char) (myChar + 1); System.out.println(newChar);
输出结果为:
d
这是因为小写字母c的Unicode编码再加1,就是d。
2.转义字符
Java的转义字符是一种特殊的字符变量,以反斜杠“\”开头,后跟一个或多个字符。转义字符具有特定的含义,不同于字符原有的意义。Java中的转义字符集如表2-5所示。
表2-5 Java中的转义字符集
![](https://epubservercos.yuewen.com/5D7B55/23721525401929906/epubprivate/OEBPS/Images/Figure-T37_49083.jpg?sign=1739296007-e7fU8dWOiiePWYYT8ZSx4YqQF3J3aryQ-0-1431d06fe358d38b34b5f131e5011ef8)
【例2.5】转义字符的应用。创建EscapeCharacter类,在类中定义多个转义字符并输出(源代码\ch02\2.5.txt)。
![](https://epubservercos.yuewen.com/5D7B55/23721525401929906/epubprivate/OEBPS/Images/Figure-P37_49084.jpg?sign=1739296007-g3cCex2bqAqiQA7114cES9kJy3CMqqn8-0-585354b084b0ca652de37d6cdd7e172f)
运行结果如图2-7所示。
![](https://epubservercos.yuewen.com/5D7B55/23721525401929906/epubprivate/OEBPS/Images/Figure-P37_3327.jpg?sign=1739296007-kmsNm2z2htckh4CSIseeTTOh6yqRc6xc-0-0bb4a82882aa64fe57db702739eb8721)
图2-7 转义字符运算输出结果
2.4.4 布尔类型
布尔型又称逻辑型,只能取两个值true和false,分别代表布尔逻辑中的“真”与“假”。Java中布尔值不能与整数型相互转换。布尔值一般用在逻辑判断语句中。布尔型变量声明示例如下:
boolean myFlag = true; System.out.println(myFlag);
输出结果为:
true
【例2.6】布尔型数据类型的应用。创建OpenDoor类,首先弹出输入提示,然后获取用户输入的值,判断用户输入的值是否与默认值相等,最后将结果赋给一个boolean变量并输出(源代码\ch02\2.6.txt)。
![](https://epubservercos.yuewen.com/5D7B55/23721525401929906/epubprivate/OEBPS/Images/Figure-P38_49088.jpg?sign=1739296007-3BRiIlI6sEcl2rbk50w8lweDcHNtlagz-0-8089c5f6e1c6537b87a0b2b9a3ad708c)
运行结果如图2-8所示。
![](https://epubservercos.yuewen.com/5D7B55/23721525401929906/epubprivate/OEBPS/Images/Figure-P38_3438.jpg?sign=1739296007-8Jwd25p0x0s8gfgyLvNDTg1HOaRqsyaD-0-79420e5a328a765c3aa372c678c91a42)
图2-8 判断口令是否正确
☆大牛提醒☆
实例【例2.6】中使用了新的Java语句:控制台获取数据。这里读者不必深究其声明与使用的过程,该部分涉及对象引用的概念,这部分的知识会在后面的章节中详细介绍。
2.4.5 字符串类型
字符本身只能够包含单个的内容,这在很多情况下是无法满足要求的,所以在Java中专门提供了一种String类型。String是引用型数据,是一个类(因此String的S一定要大写),但是这个类稍微特殊一些。如果现在使用abc在Java之中就表示定义了字符串abc。
在String类型的变量上使用了“+”,则对于String而言表示要执行字符串的连接操作。但“+”既可以表示出数据的加法操作,也可以表示字符串连接,那么如果这两种操作碰到一起会怎么样呢?如果遇到了与字符串的加法操作,所有的数据类型(基本、引用)都会自动地变为String型数据。
【例2.7】输出字符串数据类型(源代码\ch02\2.7.txt)。
![](https://epubservercos.yuewen.com/5D7B55/23721525401929906/epubprivate/OEBPS/Images/Figure-P38_49085.jpg?sign=1739296007-ohZPFI9eIESRYHRe1fTMZV7uq2Q8LyUI-0-5e4023cba2357b8050b5f457ba9a83d5)
运行结果如图2-9所示。
![](https://epubservercos.yuewen.com/5D7B55/23721525401929906/epubprivate/OEBPS/Images/Figure-P39_3504.jpg?sign=1739296007-a47cTHoqwYzrUHn3yCwFC0B1O3GtsnXh-0-ce16dd91bf4e3fe3682faf0e1ce43f8c)
图2-9 字符串数据类型运算输出结果