java中常量变量和final变量有什么区别?

问题描述 投票:0回答:4

请帮助我理解Java中常量变量和

final
变量之间的区别。我对此有点困惑。

java variables constants terminology final
4个回答
44
投票

常量是概念,变量的属性。

final
是声明常量变量的java关键字。


正如其他人指出的那样,从语义/语言学的角度来看,表达“常量变量”是一个矛盾修饰法,因此,我们可以争论它的正确性。 引用

规范

,反正我们可以阅读

原始类型 [...] 的变量是最终变量,并使用编译时常量表达式(第 15.28 节)进行初始化,称为
常量变量

因此,我认为我们可以出于我们的目的接受(并认为是正确的)这个二项式。


18
投票
Constant

不是 Java 中的关键字。

使任何变量保持不变是一个概念。为此,我们在Java中使用

final

关键字,这样在使用final关键字初始化变量后,没有人可以重新分配该变量的值。

    


5
投票

将变量声明为常量

在声明变量时,我展示了为 int 变量赋值是很容易的:

int hoursInADay = 24;

我们知道这个值在现实世界中永远不会改变,所以我们确保它不会在程序中改变。这是通过添加关键字修饰符 
final

:

 来完成的

final int HOURS_IN_A_DAY = 24;

除了 
final

关键字之外,您还应该注意到,根据标准 Java 命名约定,变量名称的大小写已更改为大写。这使得更容易发现代码中哪些变量是常量。

如果我们现在尝试更改 

HOURS_IN_A_DAY

的值:

final int HOURS_IN_A_DAY = 24; 
HOURS_IN_A_DAY = 36;

我们将从编译器中得到以下错误:

无法为最终变量 HOURS_IN_A_DAY 赋值

任何其他基本数据类型变量也是如此。要使它们成为常量,只需在其声明中添加
final

关键字即可。

在哪里声明常量

与普通变量一样,您希望将常量的范围限制在它们的使用范围内。 如果仅在方法中需要常量的值,则在那里声明它:

public class Hours { public static final int HOURS_IN_A_DAY = 24; }



5
投票
final

”意味着我们不能为该变量重新赋值(即我们只能使用

variable = Something
一次且仅一次。
因此对于原语我们可以说最终变量是常量。 

但是最终变量可以是非常量。 例如

final Stringbuffer string = new StringBuffer("not"); string.append(" constant"); System.out.println(string);

将打印字符串“not Constant”。这里的“string”变量是最终变量,但不是常量。 
我希望这会有所帮助 

© www.soinside.com 2019 - 2025. All rights reserved.