常量变量是其值固定的变量,程序中仅存在一个副本。声明常量变量并为其分配值后,就无法在整个程序中再次更改其值。
与C语言不同,Java(直接)不支持常量。但是,您仍然可以通过声明变量static和final来创建常量。
一旦声明了一个静态变量,它们将在编译时加载到内存中,即只有一个副本可用。
声明变量final后,就无法再次修改其值。
class Data { static final int integerConstant = 20; } public class ConstantsExample { public static void main(String args[]) { System.out.println("value of integerConstant: "+Data.integerConstant); } }
value of integerConstant: 20
声明变量final后,就无法更改其值。如果尝试这样做,将会生成编译时错误。
public class FinalExample { public static void main(String args[]) { final int num = 200; num = 2544; } }
FinalExample.java:4: error: cannot assign a value to final variable num num = 2544; ^ 1 error
final变量和常量(静态和final)之间的主要区别在于,如果创建不带static关键字的final变量,尽管其值不可修改,但每次创建新对象时都会创建该变量的单独副本。如果常量不可修改,并且整个程序中只有一个副本。例如,请看以下Java程序,
class Data { final int integerConstant = 20; } public class ConstantExample { public static void main(String args[]) { Data obj1 = new Data(); System.out.println("value of integerConstant: "+obj1.integerConstant); Data obj2 = new Data(); System.out.println("value of integerConstant: "+obj2.integerConstant); } }
value of integerConstant: 20 value of integerConstant: 20
在这里,我们创建了一个最终变量,并尝试使用两个对象来打印其值,因为在两个实例中该变量的值都相同,因为我们为每个变量使用了一个不同的对象,它们是实际变量的副本。
根据常量的定义,您需要在整个程序(类)中具有变量的单个副本。
因此,要创建常量作为pert定义,需要将其声明为static和final。