java直接量/常量池

直接量
直接量(literal value,也被直译为字面值)是指在程序中通过源代码直接给出的值,例如在int a=5;这行代码中,为变量a所分配的初始值5就是一个直接量。
直接量的类型
并不是所有的数据类型都可以指定直接量,能指定直接量的通常只有三种类型:基本类型、字符串类型和null类型。具体而言,Java支持如下8种类型的直接量。
➢ int类型的直接量:在程序中直接给出的整型数值,可分为二进制、十进制、八进制和十六进制4种,其中二进制需要以0B或0b开头,八进制需要以0开头,十六进制需要以0x或0X开头。例 如123、012(对应十进制的10)、0x12(对应十进制的18)等。
➢ long类型的直接量:在整型数值后添加l或L后就变成了long类型的直接量。例如3L、0x12L(对应十进制的18L)。
➢ float类型的直接量:在一个浮点数后添加f或F就变成了float类型的直接量,这个浮点数可以是标准小数形式,也可以是科学计数法形式。例如5.34F、3.14E5f。
➢ double类型的直接量:直接给出一个标准小数形式或者科学计数法形式的浮点数就是double类型的直接量。例如5.34、3.14E5。
➢ boolean类型的直接量:这个类型的直接量只有true和false。
➢ char类型的直接量:char类型的直接量有三种形式,分别是用单引号括起来的字符、转义字符和Unicode值表示的字符。例如 ‘a’、‘\n’和’\u0061’。
➢ String类型的直接量:一个用双引号括起来的字符序列就是String类型的直接量。关于字符串直接量有一点需要指出,当程序第一次使用某个字符串直接量时,Java会使用常量池(constant pool)来缓存该字符串直接量,如果程序后面的部分需要用到该字符串直接量时,Java会直接使用常量池中的字符串直接量。
提示:
由于String类是一个典型的不可变类,因此String对象创建出来就不可能被改变,因此无须担心共享String对象会导致混乱。关于不可变类的概念参考本书第6章。
常量池指的是在编译期被确定,并被保存在已编译的.class文 件中的一些数据。它包括关于类、方法、接口中的常量,也包括字符串直接量。Java会确保每个字符串常量只有一个,不会产生多个副本。例如s0和s1中的"hello"都是字符串常量,它们在编译期就被确定了, 所以s0s1返回true;而"he"和"llo"也都是字符串常量,当一个字符串由多个字符串常量连接而成时,它本身也是字符串常量,s2同样在编译期就被解析为一个字符串常量,所以s2也是常量池中"hello"的引用。因此,程序输出s0s1返回true,s1==s2也返回true。
➢ null类型的直接量:这个类型的直接量只有一个值,即null。
在上面的8种类型的直接量中,null类型是一种特殊类型,它只有一个值:null,而且这个直接量可以赋给任何引用类型的变量,,包括String类型。用以表示这个引用类型变量中保存的地址为空,即还未指向任何有效对象。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值