本页面更新日期: 2016年06月08日
前言
直接量 是指 在程序中通过源代码直接给出的值.
例如在 int a = 5; 这行代码中, 为变量 a 所分配的初始值 5 就是一个直接量.
直接量的类型
并不是所有的数据类型都可以指定直接量.
能指定直接量的通常只有三种类型
- 基本类型
- int 类型直接量: 整型数值, 可以 二进制, 十进制, 八进制 和 十六进制来表示. 例如十进制的: 5
- long 类型直接量: 在整型数值后面添加 L , 例如 3L
- float 类型直接量: 在一个浮点数后面添加 F. 例如 5.34F
- double 类型直接量: 一个浮点数, 例如 5.34
- boolean 类型直接量: 这个类型的直接量只有 true 和 false
- char 类型直接量: 三种形式, 单引号括起来的字符, 转义字符, 和 Unicode值. 例如 ‘a’ ‘\n’ ‘\u0061’
- 字符串类型
- 一个用双引号括起来的字符就是String类型的直接量, 例如 “哈哈哈”
- null 类型
- null类型是一种特殊类型, 它只有一个值: null. 而且它可以赋值给任何引用类型的变量.用以表示这个引用类型变量中保存的地址为空, 也就是没有指向任何有效对象.
关于引用类型, 以后的以后 会讲到.
直接量的赋值
以下代码都是OK的
int a = 5;
char c = 'a';
boolean b = true;
float f = 5.12F;
double d = 4.12;
String myself = "我是一个欢乐的小逗比";
关于字符串直接量需要注意, 当程序第一次使用字符串直接量时, JAVA会使用 常量池来缓存该字符串直接量, 如果程序后面的部分需要用到该字符串直接量时, JAVA会直接使用常量池中的字符串直接量.
常量池 这个名词看起来高大上, 其实就是将一个字符串保存在了内存当中, 谁想用直接拿去用, JAVA就不用重新生成这个字符串直接量了. 看到没, 其实就是 JAVA在偷懒!
常量池指的是在编译期被确定, 并且保存在已编译的 .class 文件 中的一些数据. 它包括关于类, 方法, 接口中的常量, 也包括字符串直接量.
让我们写段代码试试看.
public class VariablesDirectly
{
public static void main(String[] args)
{
String s0 = "hello";
String s1 = "hello";
String s2 = "he" + "llo";
//让我们做个比较 看看他们相同么?
System.out.println( s0 == s1 );
//下面这个有意思
System.out.println( s0 == s2 );
}
}
运行的结果是两个 ture.
是不是很有意思呢? s0 是原装的 s2 是拼接的 这都能相同?因为 JAVA会确保每个字符串常量只有一个, 不会产生多个副本. 这么做是为了节省内存空间, 提升程序运行效率.
he 和 llo 拼接之后就是 hello , 所以 s0 == s2 ,返回 true
结尾
如果你想学习更多JAVA知识, 可以 点我进入目录页