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

时间:2015-05-30 11:28:19

标签: java variables constants final

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

4 个答案:

答案 0 :(得分:25)

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

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

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

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

  

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

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

答案 1 :(得分:7)

Constant不是Java中的关键字。

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

答案 2 :(得分:4)

现实世界中有几个永远不会改变的价值观。一个正方形总是有四个边,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;
}

答案 3 :(得分:0)

设置变量“ final”意味着我们无法将值重新分配给该变量(即,我们只能使用一次variable = Something

因此对于原始数据,我们可以说最终变量是常量。

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

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

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