java中的常量变量和最终变量之间有什么区别?

请帮助我理解Java中常量变量和final变量之间的区别。 我有点困惑。

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

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


正如其他人所指出的那样,从语义/语言学的角度来看,表达常数变量是矛盾的,因此,我们可以争论它的正确性。

无论如何,引用规范 ,我们可以阅读

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

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

Constant不是Java中的关键字。

这是使任何变量保持不变的概念。 为此,我们在Java中使用final关键字,以便在使用final关键字初始化变量后,没有人可以重新分配该变量的值。

现实世界中有几个永远不会改变的价值观。 一个正方形总是有四个边,PI到三个小数位总是3.142,一天总是有24个小时。 这些值保持不变。 在编写程序时,以相同的方式表示它们是有意义的 – 作为一旦将它们分配给变量就不会被修改的值。 这些变量称为常量。

将变量声明为常量

在声明变量时,我表明很容易为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; }