1、Java字面量(Java直接量)
int i = 1;把整数1赋值给int型变量i,整数1就是Java字面量,
同样,String s = "abc";中的abc也是字面量。
数据类型 | 直接量描述 | 举例 |
int | 整数直接量(可用二、十、八、十六进制表示) | 12 -12 +12 0b12 012 0x12 |
long | 在整数直接量(也就是int型)后面,加上字母l或L | 12l -12L |
float | 在数字(包括整数和小数)后面,加上字母f或F | 3f -3.14F 3.14e5F -3.14E-5f .5f |
double | 1.浮点数直接量 2.科学计数法直接量 3.在数字(包括整数和小数)后面加上字母d或D | 3d 3.14e-5 -.5 |
boolean | 布尔直接量true、false | true false |
char | 1.单引号内的单个字符 2.单引号内的转义字符 | ‘a’ ‘中’ ‘\n’ ‘\u0000’ |
String | 双引号内的字符序列 | “abc” “中国” |
null | 引用类型的空指向 | null |
举例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
int
i1 =
123
;
// 十进制123
int
i2 = +0b101;
// 二进制101
int
i3 = -
0123
;
// 八进制123
int
i4 =
0xA9E3F
;
// 十六进制A9E3F
long
l1 = 123456789l;
long
l2 = 0b101L;
long
l3 = +0123L;
long
l4 = -0xA9E3FL;
float
f1 =
3
.14f;
float
f2 = -3e-5f;
float
f3 = +.5F;
// float型数 正0.5
double
d1 =
3.0
;
double
d2 = +314e-
2
;
double
d3 = -.
5
;
// double型数 负0.5
boolean
b =
true
;
char
c1 =
'a'
;
char
c2 =
'中'
;
char
c3 =
'\\'
;
// 转义字符,最终的字符是反斜杠
char
c4 =
'\123'
;
// \+三位八进制数
char
c5 =
'\u000f'
;
// Unicode 000f
String s1 =
"abc"
;
String s2 =
"中国"
;
String s3 =
"\n\r"
;
// 转义字符串,最终的字符串是换行回车
Object o =
null
;
String s =
null
;
// 因为String是引用类型,所以可以赋null
|
错误的字面量
-
比int的最大值还要大1的直接量2147483648是错误的,因为超过int表示的范围,应该使用2147483648L表示。
-
比long的最大值大1的直接量9223372036854775808L是错误的,因为超过long表示的范围,应该使用 BigInteger类来表示:BigInteger b = new BigInteger("9223372036854775808");
-
下面四个字面量是错误的:
一个单引号:'''
一个反斜杠:'\'
带有"引号的字符串:"abc"xyz"
带有\反斜杠的字符串:"abc\xyz"
正确的写法是转义:
'\''
'\\'
"abc\"xyz"
"abc\\xyz"
说明
-
整数直接量的四种表示:十进制、二进制(JDK7支持)、八进制、十六进制。
八进制:以数字0开头的整数,如012,表示十进制的10;
十六进制:以数字0和字母X(或x)组合开头的整数,如0x12,表示十进制的18。
二进制:以数字0和字母B(或b)组合开头的整数,如0b11,表示十进制的3; -
Java中,数字前多余的0,会自动去掉。如00.1表示0.1,0012表示八进制012。
-
Java中,小数可省略0.部分或.0部分,如.3表示0.3,3.表示3.0。
-
对于数字直接量,需要根据直接量类型以及各类型的取值范围来规范赋值,不能将高取值范围的直接量赋值给低取值范围的类型,如:
1234float
f1 =
3.14
;
// 错误,3.14是double型,float型取值范围小于double
float
f2 =
3
.14f;
// 正确
double
d1 =
3.14
;
// 正确
double
d2 =
12
;
// 正确,直接量12是int型,而double型取值范围大于int,d2的值将变成12.0
-
笔者认为还有一种字面量,叫数组字面量,如{元素1,...,元素N},它只能赋给数组。
-
JDK1.7新增特性
二进制表示数字:以数字0和字母B(或b)组合开头的整数;
下划线分割符:int one_million = 1_000_000;