Java 中常量和 final 变量的区别?
javaobject oriented programmingprogramming更新于 2024/6/29 23:14:00
Java 中的常量
常量变量的值是固定的,在程序中只有一个副本。一旦声明一个常量变量并为其赋值,就不能在整个程序中再次更改其值。
与 C 语言不同,Java 不支持常量(直接)。但是,您仍然可以通过将变量声明为 static 和 final 来创建常量。
一旦将变量声明为 static,它们将在编译时加载到内存中,即只有一个副本可用。
一旦将变量声明为 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
Java 中的 final 变量
一旦将变量声明为 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
最终变量和常量(静态和最终)之间的主要区别在于,如果您创建一个没有 static 关键字的最终变量,尽管其值不可修改,但每次创建新对象时都会创建该变量的单独副本。而常量是不可修改的,并且在整个程序中只有一个副本。例如,考虑以下 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
这里我们创建了一个 final 变量,并尝试使用两个对象打印其值,认为变量的值在两个实例中是相同的,因为我们对每个实例使用了不同的对象,它们是实际变量的副本。
根据常量的定义,您需要在整个程序(类)中拥有该变量的单个副本。
因此,要创建常量作为 pert 定义,您需要将其声明为 static 和 final。