Java字面量(Java直接量)和符号引用

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

错误的字面量

  1. 比int的最大值还要大1的直接量2147483648是错误的,因为超过int表示的范围,应该使用2147483648L表示。

  2. 比long的最大值大1的直接量9223372036854775808L是错误的,因为超过long表示的范围,应该使用 BigInteger类来表示:BigInteger b = new BigInteger("9223372036854775808");

  3. 下面四个字面量是错误的: 
             一个单引号:''' 
             一个反斜杠:'\' 
            带有"引号的字符串:"abc"xyz" 
            带有\反斜杠的字符串:"abc\xyz" 
    正确的写法是转义: 
            '\'' 
            '\\' 
            "abc\"xyz"
            "abc\\xyz"

说明

  1. 整数直接量的四种表示:十进制、二进制(JDK7支持)、八进制、十六进制。
      八进制:以数字0开头的整数,如012,表示十进制的10;
      十六进制:以数字0和字母X(或x)组合开头的整数,如0x12,表示十进制的18。
      二进制:以数字0和字母B(或b)组合开头的整数,如0b11,表示十进制的3;

  2. Java中,数字前多余的0,会自动去掉。如00.1表示0.1,0012表示八进制012。

  3. Java中,小数可省略0.部分或.0部分,如.3表示0.3,3.表示3.0。

  4. 对于数字直接量,需要根据直接量类型以及各类型的取值范围来规范赋值,不能将高取值范围的直接量赋值给低取值范围的类型,如:

    ?
    1
    2
    3
    4
    float  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

  5. 笔者认为还有一种字面量,叫数组字面量,如{元素1,...,元素N},它只能赋给数组。

  6. JDK1.7新增特性
      二进制表示数字:以数字0和字母B(或b)组合开头的整数;
      下划线分割符:int one_million = 1_000_000;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值