![Java无难事:详解Java编程核心思想与技术](https://wfqqreader-1252317822.image.myqcloud.com/cover/59/35011059/b_35011059.jpg)
2.3 变量和字面常量
![img](https://epubservercos.yuewen.com/AD1899/18685354708165706/epubprivate/OEBPS/Images/txt002_17.jpg?sign=1739137322-qzDVLgxyWoH5NCXQpm0H2xAhPkSVQ2QI-0-f7790aa6411a1c22b59db9bb1dca5ace)
扫码看视频
2.3.1 变量
在上一节中,我们使用了变量这个概念,像bVal、dVal、iVal等这些都是变量。可以看出,变量是用于保存特定类型的数据。变量代表某个地址单元中可修改的数据。
变量是有作用范围的,这个范围叫变量的作用域,若超出变量的作用域访问变量;则会产生编译错误。一个变量的作用域局限在变量声明所在的最小的花括号中。如:
例子1:
![img](https://epubservercos.yuewen.com/AD1899/18685354708165706/epubprivate/OEBPS/Images/txt002_18.jpg?sign=1739137322-DpTRlY0HVkbX0LWbUxuIqHvRwVffpY73-0-83caccfb89a61fe8e261e0d385c1971e)
例子2:
![img](https://epubservercos.yuewen.com/AD1899/18685354708165706/epubprivate/OEBPS/Images/txt002_19.jpg?sign=1739137322-dvCrXa4t5Qx9jHRKqmdi3dpWIlZjDmpt-0-6fffb5ef7f46cbacd178dccfe1d1a7ef)
例子3:
![img](https://epubservercos.yuewen.com/AD1899/18685354708165706/epubprivate/OEBPS/Images/txt002_20.jpg?sign=1739137322-tTCl8zYuCl68wIzxQ1KSEAdOC203Ozb7-0-98060e24037f1bce7e9bc4c97d30244a)
2.3.2 字面常量
常量代表某个地址单元中的不可修改的数据。
![img](https://epubservercos.yuewen.com/AD1899/18685354708165706/epubprivate/OEBPS/Images/txt002_21.jpg?sign=1739137322-kyPFNiLF9JYqn19fiyiErLj1cXnLj4C9-0-cf154c12684bcf5a8431cd0dafd3f1e6)
在上面3行代码中,10、true、x就是所谓的字面常量。
1.整数字面常量
整数的字面常量可以使用八进制、十进制、十六进制和二进制进行书写。
● 八进制字面常量:0721,在数值前面加0。
● 十进制字面常量:23,直接输入数字。
● 十六进制字面常量:0xA167,在数值前面加0x或者0X。
● 二进制字面常量:0b10011101,在数值前面加0b或者0B(Java 7新增)。
下面的例子在控制台窗口中打印4个23。
![img](https://epubservercos.yuewen.com/AD1899/18685354708165706/epubprivate/OEBPS/Images/txt002_22.jpg?sign=1739137322-bM0IMew0nKAbyW9L002Pu4D9auZPRzTh-0-9a5e03bcfebab18e14546417f3b93f32)
![img](https://epubservercos.yuewen.com/AD1899/18685354708165706/epubprivate/OEBPS/Images/txt002_23.jpg?sign=1739137322-mZCPDW6Bg2Y3C49dcXEmjxN9UiB5Jx86-0-e2935bc500311bf35f85449cbc4c39fd)
在数值后面加上字母l或者L代表长整型,如:
![img](https://epubservercos.yuewen.com/AD1899/18685354708165706/epubprivate/OEBPS/Images/txt002_24.jpg?sign=1739137322-ca3Ekqbs3OG4jwxcLl5cqfVjmoopEpWT-0-283dc3e5f5b4e311dc989c621e72dfa8)
2.浮点数字面常量
浮点数字面常量直接输入10进制的小数即可,不过编译器会把这些数值理解为double类型的字面常量,如果要输入float类型的字面常量,则需要在小数后面加上字母f或F。
![img](https://epubservercos.yuewen.com/AD1899/18685354708165706/epubprivate/OEBPS/Images/txt002_25.jpg?sign=1739137322-DjDmsxBadaLs0ljAoB5GhSDFdAGtEYzS-0-cc83538a58b7138dd9c062e51cc40deb)
如果要输入的值是0.x,则前面的0可以省略。当然,科学计数法也是可用的。
![img](https://epubservercos.yuewen.com/AD1899/18685354708165706/epubprivate/OEBPS/Images/txt002_26.jpg?sign=1739137322-imT8oTI8RJhKtQC9zmNC3oFf5U06Kf0O-0-6efc47f325fb6b87e3e8f48fded10a42)
3.布尔字面常量
布尔字面常量很简单,除了true就是flase,在此就不赘述了。
4.字符字面常量
在我们给char类型赋值时,可以使用字符字面常量。直接使用单引号括住一个字符即可。
![img](https://epubservercos.yuewen.com/AD1899/18685354708165706/epubprivate/OEBPS/Images/txt002_27.jpg?sign=1739137322-6vN8SsI3jzFBkoVLI9ILa6WgwTttPER9-0-034f1c1e0cf2ceed2576cfd13c456713)
当我们要赋值单引号时,需要使用一个反斜杠来进行转义:\'。在介绍char类型时,我们也提到char类型存储采用的是Unicode编码,所以也可以使用“\u”转义来直接输入Unicode值。
![img](https://epubservercos.yuewen.com/AD1899/18685354708165706/epubprivate/OEBPS/Images/txt002_28.jpg?sign=1739137322-ze4tkpfPg8nLU3BgjbpfyWVRj86ZMcOW-0-ad4ef8289dce8560cc1fcae1284bd2b4)
5.字符串字面常量
字符串字面常量是用双引号括起来的内容。在字符串字面常量中,如果包含特殊字符,那么需要使用转义字符来表示这些特殊的字符,如使用“\n”来表示换行等。表2-3列出了常见的一些转义字符。
表2-3 转义字符
![img](https://epubservercos.yuewen.com/AD1899/18685354708165706/epubprivate/OEBPS/Images/txt002_29.jpg?sign=1739137322-iWT4KX5TQnqFiNRoym50QcYU6Gm0WogL-0-a7890c95bcf00614db2afe54b5686e80)
续表
![img](https://epubservercos.yuewen.com/AD1899/18685354708165706/epubprivate/OEBPS/Images/txt002_30.jpg?sign=1739137322-jhRm1mBfd0YNJMTKE8WCP0zLvKKu2Glq-0-af00334329a67c0aebd8fd50a58b6fc0)
我们看代码2.2:
![img](https://epubservercos.yuewen.com/AD1899/18685354708165706/epubprivate/OEBPS/Images/txt002_31.jpg?sign=1739137322-g4RX5GYbuSEBHZy3foF4xHEtFBr7Jt1O-0-e275ff00ddea1ed275588b6f740d1efe)
程序输出的结果为:
![img](https://epubservercos.yuewen.com/AD1899/18685354708165706/epubprivate/OEBPS/Images/txt002_32.jpg?sign=1739137322-0JKSm7LQNEx2fl5TqPG20WY6ionDbBIq-0-2eaecfa97ad69659776c1620dd6d5699)
6.null字面常量
在Java中,null代表什么都没有,跟C++中的null类似。不过在C++中,null可以用0来代替,而在Java中,null表示对象的引用为空,0是数值类型,两者不能混用。
7.在数字字面量中使用下画线
这是Java 7新增的特性,允许在数字字面量的数字之间使用下画线字符(_),可以用来对较长的数字进行分组,从而提高代码的可读性。
![img](https://epubservercos.yuewen.com/AD1899/18685354708165706/epubprivate/OEBPS/Images/txt002_33.jpg?sign=1739137322-jGx7uYN5hZEGJDCd3iZG3dEocwtVeXxN-0-d2bc6cd1b9903919b05c8f402ac50cef)
下画线只能出现在数字之间,以下的位置不能出现下画线:
● 数字的开头和结尾。
● 浮点数中与小数点相邻。
● 浮点数后缀f或F,以及长整型后缀l或L之前。
● 十六进制字面常量前缀0x或0X,以及二进制字面常量前缀0b或0B之后。
● 预期出现数字的位置。
例如:
![img](https://epubservercos.yuewen.com/AD1899/18685354708165706/epubprivate/OEBPS/Images/txt002_34.jpg?sign=1739137322-aZTgiEtBx6mWtHGuLDncDoUEvNM1y8TO-0-602fef1d0b048bbea46e1843802b3949)
![img](https://epubservercos.yuewen.com/AD1899/18685354708165706/epubprivate/OEBPS/Images/txt002_35.jpg?sign=1739137322-xljVSZGGkZx2z9w8BSubiTyCfsBnKX2Z-0-5a334ff1701f61850f292b125fbafcc2)