- Java基础案例教程(第2版)
- 黑马程序员编著
- 1477字
- 2025-03-13 16:51:03
2.1.5 Java中的常量
常量就是在程序中固定不变的值,是不能改变的数据。例如,数字1、字符'a'、浮点数3.2等都是常量。在Java中,常量包括整型常量、浮点数常量、字符常量、字符串常量、布尔常量和null常量。
1.整型常量
整型常量是整数类型的数据,有二进制、八进制、十进制和十六进制4种表示形式,具体如下。
•二进制:由数字0和1组成的数字序列。从JDK 7开始,允许使用字面值表示二进制数,前面要以0b或0B开头,目的是与十进制进行区分,如0b01101100、0B10110101。
•八进制:以0开头并且其后由0~7范围内(包括0和7)的整数组成的数字序列,如0342。
•十进制:由数字0~9范围内(包括0和9)的整数组成的数字序列,如198。
•十六进制:以0x或者0X开头并且其后由0~9、A~F(包括0和9、A和F,字母不区分大小写)组成的数字序列,如0x25AF。
需要注意的是,在程序中为了标明不同的进制,数据都有特定的标识,八进制必须以0开头,如0711、0123;十六进制必须以0x或0X开头,如0xaf3、0Xff;整数以十进制表示时,第一位不能是0。例如,十进制的127,用二进制表示为0b1111111或者0B1111111,用八进制表示为0177,用十六进制表示为0x7F或者0X7F。
2.浮点数常量
浮点数常量就是在数学中的小数,浮点数分为单精度浮点数(float)和双精度浮点数(double)两种类型。其中,单精度浮点数后面以F或f结尾,而双精度浮点数则以D或d结尾。当然,在使用浮点数时也可以在结尾处不加任何后缀,此时JVM会默认浮点数为double类型的浮点数。浮点数常量还可以通过指数形式表示。
浮点数常量具体示例如下:
2e3f 3.6d 0f 3.84d 5.022e+23f
3.字符常量
字符常量用于表示一个字符,一个字符常量要用一对英文半角格式的单引号(' ')括起来。字符常量可以是英文字母、数字、标点符号和由转义序列表示的特殊字符。具体示例如下:
'a' '1' '&' '\r' '\u0000'
上面的示例中,'\u0000'表示一个空白字符,即在单引号之间没有任何字符。之所以能这样表示,是因为Java采用的是Unicode字符集,Unicode字符以\u开头,空白字符在Unicode码表中对应的值为'\u0000'。
4.字符串常量
字符串常量用于表示一串连续的字符,一个字符串常量要用一对英文半角格式的双引号(" ")括起来,具体示例如下:
"HelloWorld" "123" "Welcome \n XXX" ""
一个字符串可以包含一个字符或多个字符,也可以不包含任何字符,即长度为零。
5.布尔常量
布尔常量即布尔型的值,用于区分事物的真与假。布尔常量有true和false两个值。
6.null常量
null常量只有一个值null,表示对象的引用为空。关于null常量将会在第3章中详细介绍。
多学一招:十进制和二进制之间的数值转换
通过前面的介绍可知,整型常量可以分别用二进制、八进制、十进制和十六进制数表示,不同的进制并不影响数据本身,同一个整型常量可以在不同进制之间转换。下面介绍较为常用的两种进制之间相互转换的方式,具体如下。
1.十进制转二进制
十进制转换成二进制就是一个除以2取余数的过程。把要转换的数除以2,得到商和余数,将商继续除以2,直到商为0。最后将所有余数倒序排列,得到的数就是转换结果。
以十进制的6转换为二进制数为例进行说明,转换过程如图2-1所示。

图2-1 十进制转二进制
十进制数据6三次除以2得到的余数依次是0、1、1,将所有余数倒序排列是110,所以十进制的6转换成二进制数,结果是110。
2.二进制转十进制
二进制转换成十进制数要从右到左用二进制位上的每个数乘以2的相应次方。例如,将最右边第一位的数乘以2的0次方,第二位的数乘以2的1次方,第n位的数乘以2的n-1次方,然后把所有相乘后的结果相加,得到的结果就是转换后的十进制数。例如,把二进制数0110 0100转换为十进制,转换方式如下:
0×20+0×21+1×22+0×23+0×24+1×25+1×26+0×27 = 100
由于0乘以任意数都是0,因此上述表达式也可以简写为
1×22+1×25+1×26 = 100
得到的结果100就是二进制数0110 0100转换后的十进制数。