请帮助我理解Java中常量变量和
final
变量之间的区别。我对此有点困惑。
Constant
不是 Java 中的关键字。
使任何变量保持不变是一个概念。为此,我们在Java中使用
final
关键字,这样在使用final关键字初始化变量后,没有人可以重新分配该变量的值。
在声明变量时,我展示了为 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;
}
final
”意味着我们不能为该变量重新赋值(即我们只能使用
variable = Something
一次且仅一次。因此对于原语我们可以说最终变量是常量。
但是最终变量可以是非常量。 例如
final Stringbuffer string = new StringBuffer("not");
string.append(" constant");
System.out.println(string);
将打印字符串“not Constant”。这里的“string”变量是最终变量,但不是常量。 我希望这会有所帮助