![Java无难事:详解Java编程核心思想与技术(第2版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/851/47548851/b_47548851.jpg)
2.3 变量和字面常量
2.3.1 变量
在上一节中,我们使用了变量这个概念,像bVal、dVal、iVal等这些都是变量。可以看出,变量是用于保存特定类型的数据。变量代表某个地址单元中可修改的数据。
变量是有作用范围的,这个范围叫变量的作用域,若超出变量的作用域访问变量;则会产生编译错误。一个变量的作用域局限在变量声明所在的最小的花括号中。如:
例子1:
![](https://epubservercos.yuewen.com/2C78EE/26947315207549306/epubprivate/OEBPS/Images/44554_43_1.jpg?sign=1739384422-cgOIgNquqSUcorlf6OQ2uXNQt2yWmSHX-0-3e83f96d00960ee37efaaada7a2a47c3)
例子2:
![](https://epubservercos.yuewen.com/2C78EE/26947315207549306/epubprivate/OEBPS/Images/44554_43_2.jpg?sign=1739384422-ydVgKd9TlEDejvuBbKGTagME6GYx9USC-0-35ba7470f790238d89225b3a7db9fd51)
例子3:
![](https://epubservercos.yuewen.com/2C78EE/26947315207549306/epubprivate/OEBPS/Images/44554_43_3.jpg?sign=1739384422-jzkIa9lujFUHOSEpABV1vz2StFn5RFdc-0-8c246a3a4378a44271fc1d6f8c290538)
2.3.2 字面常量
常量代表某个地址单元中的不可修改的数据。
![](https://epubservercos.yuewen.com/2C78EE/26947315207549306/epubprivate/OEBPS/Images/44554_43_4.jpg?sign=1739384422-YwmSZ0CmmxzmTbgBUcFpP0SDZYkgxoE4-0-6a803013f4f609428068f6262eb56446)
在上面3行代码中,10、true、x就是所谓的字面常量。
1.整数字面常量
整数的字面常量可以使用八进制、十进制、十六进制和二进制进行书写。
● 八进制字面常量:0721,在数值前面加0。
● 十进制字面常量:23,直接输入数字。
● 十六进制字面常量:0xA167,在数值前面加0x或者0X。
● 二进制字面常量:0b10011101,在数值前面加0b或者0B(Java 7新增)。
下面的例子在控制台窗口中打印4个23。
代码2.1 FourNumbers.java
![](https://epubservercos.yuewen.com/2C78EE/26947315207549306/epubprivate/OEBPS/Images/44554_43_5.jpg?sign=1739384422-T5kSCpXStLJJL0V5e3L3T3YwxeHXgdWr-0-bb3a654174962313c8fa79cdbe0772a6)
![](https://epubservercos.yuewen.com/2C78EE/26947315207549306/epubprivate/OEBPS/Images/44554_44_1.jpg?sign=1739384422-8tXjTK5dqGU9yV4LzC6J7GbJo6KgCTcU-0-f369f8eca910e9d8e2d2a9c57cb9675d)
在数值后面加上字母l或者L代表长整型,如:
![](https://epubservercos.yuewen.com/2C78EE/26947315207549306/epubprivate/OEBPS/Images/44554_44_2.jpg?sign=1739384422-9A0XK0JK6uqMt3Asv0zvlJR7Z3EuBG3G-0-34b52383288c60e6d3c77164353db750)
2.浮点数字面常量
浮点数字面常量直接输入10进制的小数即可,不过编译器会把这些数值理解为double类型的字面常量,如果要输入float类型的字面常量,则需要在小数后面加上字母f或F。
![](https://epubservercos.yuewen.com/2C78EE/26947315207549306/epubprivate/OEBPS/Images/44554_44_3.jpg?sign=1739384422-GlcsjEuWbzWFMx9UFImVzWMPk3cLlYkk-0-e314517aaafd826e555dcee44dde6ae5)
如果要输入的值是0.x,则前面的0可以省略。当然,科学计数法也是可用的。
![](https://epubservercos.yuewen.com/2C78EE/26947315207549306/epubprivate/OEBPS/Images/44554_44_4.jpg?sign=1739384422-CzoBIQfmZ3RVK3fZ2QPnbihJhDKwjH7M-0-b17f4782be6caf8c3be64bac5afb69f9)
3.布尔字面常量
布尔字面常量很简单,除了true就是flase,在此就不赘述了。
4.字符字面常量
在我们给char类型赋值时,可以使用字符字面常量。直接使用单引号括住一个字符即可。
![](https://epubservercos.yuewen.com/2C78EE/26947315207549306/epubprivate/OEBPS/Images/44554_44_5.jpg?sign=1739384422-VGANCxS7ryenHIKSaZj8IEI5dRgx7Pi5-0-873ee7b8214634a96ea196e6c93fc296)
当我们要赋值单引号时,需要使用一个反斜杠来进行转义:\'。在介绍char类型时,我们也提到char类型存储采用的是Unicode编码,所以也可以使用“\u”转义来直接输入Unicode值。
![](https://epubservercos.yuewen.com/2C78EE/26947315207549306/epubprivate/OEBPS/Images/44554_44_6.jpg?sign=1739384422-7u8eRi3rKZj7LUdCr7CECl2JDepv8oGL-0-0056f4979c6f5568ae162d2399001874)
5.字符串字面常量
字符串字面常量是用双引号括起来的内容。在字符串字面常量中,如果包含特殊字符,那么需要使用转义字符来表示这些特殊的字符,如使用“\n”来表示换行等。表2-3列出了常见的一些转义字符。
表2-3 转义字符
![](https://epubservercos.yuewen.com/2C78EE/26947315207549306/epubprivate/OEBPS/Images/44554_44_7.jpg?sign=1739384422-QpNQCa1Lv24Wkl9EpHHqe1woiKTVOQSX-0-4886cf72fca8275946943f1c28cc1b75)
续表
![](https://epubservercos.yuewen.com/2C78EE/26947315207549306/epubprivate/OEBPS/Images/44554_45_1.jpg?sign=1739384422-VOrYkXEMbPQuhiLzwcmxstrGcYQwLF0V-0-74b7c685044b56842aae1e54231af4f6)
我们看代码2.2:
代码2.2 字符串与转义
![](https://epubservercos.yuewen.com/2C78EE/26947315207549306/epubprivate/OEBPS/Images/44554_45_2.jpg?sign=1739384422-Vx37VXZQNuKNtgafiomCP3G6WPMcaCR6-0-011aa6ff73263adc33ec858dc3da88ca)
程序输出的结果为:
![](https://epubservercos.yuewen.com/2C78EE/26947315207549306/epubprivate/OEBPS/Images/44554_45_3.jpg?sign=1739384422-D9dZEYGtkbxwZsEASL2MOog1ldDNuy3s-0-f3819371e58a8de9cb533776b8018400)
6.null字面常量
在Java中,null代表什么都没有,跟C++中的null类似。不过在C++中,null可以用0来代替,而在Java中,null表示对象的引用为空,0是数值类型,两者不能混用。
7.在数字字面量中使用下画线
这是Java 7新增的特性,允许在数字字面量的数字之间使用下画线字符(_),可以用来对较长的数字进行分组,从而提高代码的可读性。
![](https://epubservercos.yuewen.com/2C78EE/26947315207549306/epubprivate/OEBPS/Images/44554_45_4.jpg?sign=1739384422-JBbEg4Mj6DCFEZuecyNriW0a0H9waGTU-0-4c2685181cb3ba0345577be30c21914b)
下画线只能出现在数字之间,以下的位置不能出现下画线:
● 数字的开头和结尾。
● 浮点数中与小数点相邻。
● 浮点数后缀f或F,以及长整型后缀l或L之前。
● 十六进制字面常量前缀0x或0X,以及二进制字面常量前缀0b或0B之后。
● 预期出现数字的位置。
例如:
![](https://epubservercos.yuewen.com/2C78EE/26947315207549306/epubprivate/OEBPS/Images/44554_45_5.jpg?sign=1739384422-oYjCYkzjauzK8BAPWe4Kh8FqrXDWgxkH-0-e59e4f8e2d625739231a2906ea253a10)
![](https://epubservercos.yuewen.com/2C78EE/26947315207549306/epubprivate/OEBPS/Images/44554_46_1.jpg?sign=1739384422-7lKZZ3E2jCYjqFCRvhpUh0du2lcBMMme-0-420bf752b152c6a532e0f752a73324c5)