![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=1738802214-owrvaMTkzMRjE8MTC3D3tZSk1UqEE5Q2-0-58d76eb481e22bf15b3ec8ffb33fb6eb)
图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=1738802214-jZQmaeGwrNQUJC9zUFgjmWnpo5mWUWbF-0-714826de6895b45e73eba31c14f1babc)
☆大牛提醒☆
在给变量或常量赋值时,要注意取值范围,当赋值超过相应范围时就会出错。
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=1738802214-dIRIR2RinGhDprCqwOLfYvbgRWS8aobi-0-ed35f9afdf7a7c41187d5f7279eede34)
以下为错误的int型变量声明示例。
![](https://epubservercos.yuewen.com/5D7B55/23721525401929906/epubprivate/OEBPS/Images/Figure-P34_49052.jpg?sign=1738802214-DYdh2wq4MHn7dTJB40hTkZPNipl4S3tc-0-3d22ff707b1f1eb5245d972b8eceed84)
☆大牛提醒☆
int是Java整型值的默认数据类型,当代码使用整数赋值或输出时,都默认为int型,例如:
![](https://epubservercos.yuewen.com/5D7B55/23721525401929906/epubprivate/OEBPS/Images/Figure-P34_49054.jpg?sign=1738802214-XdseFScx8RLw8CXx5uBc431NTqmm3hXM-0-47204bbf2f22368ef37a1b7ff7ca90ad)
这行代码实现的功能与下面的代码一样。
![](https://epubservercos.yuewen.com/5D7B55/23721525401929906/epubprivate/OEBPS/Images/Figure-P34_49055.jpg?sign=1738802214-uXv5tBNKibqAljXT6VnK8ykaED8nfASh-0-dd50a5670b88e0464b85a3740ba8e2d8)
2.byte型
byte型变量的声明与int型变量相同,语法格式如下:
byte 变量名=变量初值
例如,以下为byte型变量声明示例。
![](https://epubservercos.yuewen.com/5D7B55/23721525401929906/epubprivate/OEBPS/Images/Figure-P34_49057.jpg?sign=1738802214-VvL5YNd2ApNIcdvcofQzDDhTyTR4VRFQ-0-bd5eb7138a58ee131f2aa63a2c2d9be9)
以下为错误的byte型变量声明示例。
![](https://epubservercos.yuewen.com/5D7B55/23721525401929906/epubprivate/OEBPS/Images/Figure-P34_49058.jpg?sign=1738802214-xbbNGZkiMHomL8byi8BHJNu3GeUvPmbM-0-85a6d30c4336194aeff248fe712d6ef4)
3.short型
short型变量的声明与int型变量相同,语法格式如下:
short变量名 = 变量初值
例如,以下为short型变量声明示例。
![](https://epubservercos.yuewen.com/5D7B55/23721525401929906/epubprivate/OEBPS/Images/Figure-P34_49060.jpg?sign=1738802214-mzFZEuA5C298thNYp4KU5h2w7fVO59VQ-0-ffe1f2894cda3fe7e8c789dd4dec4586)
以下为错误的short型变量声明示例。
![](https://epubservercos.yuewen.com/5D7B55/23721525401929906/epubprivate/OEBPS/Images/Figure-P34_49062.jpg?sign=1738802214-doayDV7tYKpKGq3CmHx9uR1gERv3Dwmh-0-f33d1259ce09c66acafd55a51f5dee93)
4.long型
long型变量的取值范围比int型大,且属于高级的数据类型,为此在赋值时必须要注明长整型标识,就是用字母L或l写在数值后面,来与int型变量区分。声明的语法格式如下:
long 变量名=变量初值
例如,以下为long型变量声明示例。
![](https://epubservercos.yuewen.com/5D7B55/23721525401929906/epubprivate/OEBPS/Images/Figure-P35_49071.jpg?sign=1738802214-66yThOAalocunLRLW8mKV41yfUUxJoGk-0-6e0f593f275d0fdfbd70762bbb6a2a4f)
以下为错误的long型变量声明示例。
![](https://epubservercos.yuewen.com/5D7B55/23721525401929906/epubprivate/OEBPS/Images/Figure-P35_49072.jpg?sign=1738802214-oSHlpqROw9eYmYFapi9TuoGxIrKx6XfQ-0-8fce679b2617936a6e47bba063db5b81)
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=1738802214-PdcHY7TCs7C7I6BfFwNvtZav5JdyGL70-0-9b553206423e32b9ab97cd5bf1aa9585)
默认情况下小数都被看作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=1738802214-F7Nuobp9McCBrVdZFVyGRcevhBDb2O64-0-b477747e9e939a47819f8583e8e257a9)
☆大牛提醒☆
浮点型数据值是近似值,在系统中计算后的结果会与实际值有偏差。
【例2.4】灵活玩遍算术题。使用int、float和double类型的数据进行简单的算术运算(源代码\ch02\2.4.txt)。
![](https://epubservercos.yuewen.com/5D7B55/23721525401929906/epubprivate/OEBPS/Images/Figure-P35_49063.jpg?sign=1738802214-TcyTeKg8TdmiNZz01APC4dZLJc5Efw5D-0-07d941e2e54e6af75174efa554002096)
运行结果如图2-6所示。
![](https://epubservercos.yuewen.com/5D7B55/23721525401929906/epubprivate/OEBPS/Images/Figure-P36_3118.jpg?sign=1738802214-kNZCSKkEF4VlCxHqU7Pnw0cdOw4xVEQ6-0-9c281d3b1680c891241416f84375741a)
图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=1738802214-wiuCRVWCgqs816ZNJsL3vZhEZntOsES3-0-888955b3e324e7409a64975028c45fb4)
如果想要得到一个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=1738802214-qpaxvimsiqwkv6TfjiFM7qHFgBeJLW0Q-0-0116df9fac8ab8af7d172b08d6d87121)
【例2.5】转义字符的应用。创建EscapeCharacter类,在类中定义多个转义字符并输出(源代码\ch02\2.5.txt)。
![](https://epubservercos.yuewen.com/5D7B55/23721525401929906/epubprivate/OEBPS/Images/Figure-P37_49084.jpg?sign=1738802214-NiwRvu5aWakknbh26qfoQa4bCWyADa4q-0-4e83b220067d344a38f10e7df63e7de2)
运行结果如图2-7所示。
![](https://epubservercos.yuewen.com/5D7B55/23721525401929906/epubprivate/OEBPS/Images/Figure-P37_3327.jpg?sign=1738802214-K9uTcEiBRafZPJLn2krWCNDGC06pFTBE-0-0895275c9f540dc121eb54abb115f944)
图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=1738802214-inBWjYPe5lFydY03g7vin3Xr0GfTFOMQ-0-3ed6be4436663b6793c70b9e26a3913a)
运行结果如图2-8所示。
![](https://epubservercos.yuewen.com/5D7B55/23721525401929906/epubprivate/OEBPS/Images/Figure-P38_3438.jpg?sign=1738802214-c6bjxHtOFA2A7obTCqTpiFofqY6GkHth-0-b14784884f1d5ecf97c05f5a173de101)
图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=1738802214-w6FOEIqBeodSGCCHOlA8b5QFu4GRUK8K-0-8945dfcdc7b6ea116af97f7cc0365815)
运行结果如图2-9所示。
![](https://epubservercos.yuewen.com/5D7B55/23721525401929906/epubprivate/OEBPS/Images/Figure-P39_3504.jpg?sign=1738802214-uENYwH9o0Tg70fccviVf5np5jVdbcBNV-0-f6b78dbced0d0593bcf00ecb73ee264d)
图2-9 字符串数据类型运算输出结果