Java直接量

直接量

定义:就是程序中直接使用的数据值


// 在这行代码中,为变量a所分配的初始值5就是一个直接量
int a = 5;

直接量的类型
并不是所有的数据类型都可以指定直接量,能指定直接量的通常只有三种类型,基本类型,字符串类型和null类型,具体而言,Java支持如下8种类型的直接量。
1)int类型的直接量:在程序中直接给出的整数数值,可以 二进制(需要以0b、0B开头), 十进制, 八进制(需要以0开头) 和 十六进制(需要以0x、0x开头)来表示. 例如十进制的: 123、012(对应十进制的10)、0x12(对应十进制的18)等
2)long类型的直接量:在整形数值后添加l或者L就变成了long类型的直接量。例如3L、0x12L(对应是十进制的18L)
3)float类型的直接量:在一个浮点数后增加f或F就变成了float类型的直接量,这个浮点数可以是标准的小数形式,也可以是科学计数法形式。例如5.34F、3.14E5f
4)double类型的直接量:直接给出一个标准小数形式或者科学计数法形式的浮点数就是double类型的直接量。例如5.34、3.14E5
5)double类型的直接量:这个类型的直接量只有true和false
6)char类型的直接量:char类型的直接量有三种形式,分别是用单引号括起来的字符,转义字符和Unicode值表示的字符。例如'a'、'\n'、'\u0061'。
7)String类型的直接量:一个用双引号括起来的字符序列就是String类型的直接量
8)null类型的直接量:这个类型的直接量只有一个值,即null

在上面的8种类型的直接量中,null类型是一种特殊类型,它只有一个值,null,而且这个直接量可以赋给任何引用类型的变量,用以表示这个引用类型变量中保存的地址为空,即
还未指向任何有效对象。

直接量的赋值
通常总是把一个直接量赋值给对应类型的变量,除此之外,还有两点需要注意:
1),Java还支持数值之间的自动类型转换,因此允许把一个数值直接量直接赋给另一种类型的变量,这种赋值必须是系统所支持的自动类型转换。
比如把int类型的直接量赋给一个long类型的变量。
2),String类型的直接量不能赋给其他类型的变量,null类型的直接量可以直接赋给任何引用类型的变量,包括String类型。
boolean类型的直接量只能赋给boolean类型的变量,不能赋给其他任何类型的变量。

关于字符串补充
先补充一个概念,什么是常量池?常量池(constant pool)值的是在编译期被确定,并被保存在已编译的.class文件中的一些数据,常量池包括了一些类,方法,接口中的常量也包括字符串直接量。


当程序第一次使用某个字符串直接量时,Java会使用常量池来缓存该字符串直接量,如果程序后面的部分需要用到该字符串直接量时,Java会直接使用常量池中的字符串直接量。


提示:String类是一个典型的不可变类,因此String对象创建出来就不可能被改变,所以无须担心共享String对象会导致混乱。
看如下程序:
String name1 = "nihao";
String name2 = "nihao";
String name3 = "ni" + "hao";
System.out.println(name1 == name2);
System.out.println(name1 == name3);

输出都为:true

      Java会确保每个字符串常量只有一个,不会产生多个副本。代码中使用一个字符串,他们在编译期就被确定下来了,在使用的时候,直接从该常量池中拿出来就好了。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值