首页 > 编程笔记 > Java笔记

Java常量的定义和使用(小白必读)

所谓常量,就是值一直不变的量,它只能在初始化时被赋值一次,然后在程序的整个运行过程中都无法再次修改它的值。

和变量相比,常量就像是对应的内存在第一次赋值后就被上了锁,后面不允许再修改常量所对应的内存,而使用变量的话就能无限制地修改变量所对应的内存,如下图所示。


图 1 常量只能被赋值一次

有了变量为什么还需要常量呢?首先,有些场景中需要约束变量不被修改,这时常量就能很好地满足这个条件;其次,常量使我们的程序更易阅读和理解;最后,常量能提升执行性能,JVM 会对常量进行缓存从而使执行性能更好。

那么如何才能声明一个常量呢?Java 中声明一个常量时需要使用 final 关键字,final 意为最终的,所以该关键字的作用就是使常量在第一次赋值后就不允许再次被修改,语法如下:
final 数据类型 常量名 = 初始值;
根据作用范围可以将常量分为三类,分别为局部常量、成员常量以及静态常量:
局部常量:在方法内部或者代码块中定义的常量被称为局部常量,局部常量的生命周期从声明的位置开始到方法或代码块结束的位置结束;
成员常量:成员常量是在类内部且在方法外所声明的常量,成员常量的生命周期从对象被创建开始到对象被销毁结束。
静态常量:静态常量是在类内部且在方法外所声明的属于类的常量,静态常量的生命周期从类被加载开始到类被卸载结束。

接下来我们通过一段融合了这三类常量的实例来学习。
public class ConstantTest {
    final int CONSTANT_A = 10;//成员常量
    final static int CONSTANT_B = 11;//静态常量

    public static void main(String[] args) {
        final int CONSTANT_C = 12;//局部常量
        ConstantTest ct = new ConstantTest();//创建ConstantTest对象
        {
            final int CONSTANT_D = 13;//局部常量
            System.out.println(ct.CONSTANT_A);//通过ConstantTest对象访问成员常量CONSTANT_A
            System.out.println(CONSTANT_B);
            System.out.println(CONSTANT_C);
            System.out.println(CONSTANT_D);
         }
         //通过ConstantTest对象访问成员常量CONSTANT_A
         System.out.println(ct.CONSTANT_A);
         System.out.println(CONSTANT_B);
         System.out.println(CONSTANT_C);
         //System.out.println(CONSTANT_D);//已超出常量CONSTANT_D的作用范围,导致错误
    }
}
运行结果为:

10
11
12
13
10
11
12

实例中展示了局部常量、成员常量和静态常量的声明及使用,读者可以参考代码中的注释仔细看一遍。注意,推荐用大写字母来命名常量,这样能更好地与变量区分。

声明:《Java系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。