Java中常量和final变量的区别?
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
final变量和常量(static和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
在这里,我们创建了一个final变量,并尝试使用两个对象打印其值,尽管变量的值在两个实例中相同,但由于我们为每个实例使用了不同的对象,因此它们是实际变量的副本。
根据常量的定义,需要在整个程序(类)中只有一个变量副本。
因此,要根据定义创建常量,需要将其声明为static和final。
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP