java中常量变量和final变量有什么区别?
What is the difference between constant variables and final variables in java?
请帮助我理解 Java 中常量变量和 final
变量之间的区别。我对此有点困惑。
常量是概念,变量的属性。
final
是声明常量变量的java关键字。
正如其他人指出的那样,从 semantic/linguistic 的角度来看,表达式 常量变量 是矛盾的,因此,我们可以争论它的正确性。
引用specification,反正可以看
A variable of primitive type [...], that is final and initialized with a compile-time constant expression (§15.28), is called a constant variable.
因此,我想我们可以为了我们的目的接受(并认为是正确的)这个二项式。
现实世界中有几个价值观是永远不会改变的。正方形永远有四个边,圆周率精确到小数点后三位永远是 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;
我们将从编译器中得到以下错误:
cannot assign a value to final variable HOURS_IN_A_DAY
任何其他原始数据类型变量也是如此。要使它们成为常量,只需在它们的声明中添加 final
关键字。
在哪里声明常量
与普通变量一样,您希望将常量的范围限制在使用它们的地方。
如果常量的值只在一个方法中需要,那么就在那里声明它:
public class Hours {
public static final int HOURS_IN_A_DAY = 24;
}
Constant
不是 Java 中的关键字。
使任何变量成为常量是一个概念。为此,我们在 Java 中使用 final
关键字,以便在使用 final 关键字初始化变量后,没有人可以重新分配该变量的值。
Make variable "final
" 意味着我们不能给这个变量重新赋值(即我们只能使用一次 variable = Something
一次。
所以对于原始变量,我们可以说最终变量是常量。
但最终变量可以是非常量。
例如
final Stringbuffer string = new StringBuffer("not");
string.append(" constant");
System.out.println(string);
将打印字符串 "not constant"。这里 "string" 变量是最终的但不是常量。
我希望这会有所帮助
请帮助我理解 Java 中常量变量和 final
变量之间的区别。我对此有点困惑。
常量是概念,变量的属性。
final
是声明常量变量的java关键字。
正如其他人指出的那样,从 semantic/linguistic 的角度来看,表达式 常量变量 是矛盾的,因此,我们可以争论它的正确性。
引用specification,反正可以看
A variable of primitive type [...], that is final and initialized with a compile-time constant expression (§15.28), is called a constant variable.
因此,我想我们可以为了我们的目的接受(并认为是正确的)这个二项式。
现实世界中有几个价值观是永远不会改变的。正方形永远有四个边,圆周率精确到小数点后三位永远是 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;
我们将从编译器中得到以下错误:
cannot assign a value to final variable HOURS_IN_A_DAY
任何其他原始数据类型变量也是如此。要使它们成为常量,只需在它们的声明中添加 final
关键字。
在哪里声明常量
与普通变量一样,您希望将常量的范围限制在使用它们的地方。 如果常量的值只在一个方法中需要,那么就在那里声明它:
public class Hours {
public static final int HOURS_IN_A_DAY = 24;
}
Constant
不是 Java 中的关键字。
使任何变量成为常量是一个概念。为此,我们在 Java 中使用 final
关键字,以便在使用 final 关键字初始化变量后,没有人可以重新分配该变量的值。
Make variable "final
" 意味着我们不能给这个变量重新赋值(即我们只能使用一次 variable = Something
一次。
所以对于原始变量,我们可以说最终变量是常量。
但最终变量可以是非常量。 例如
final Stringbuffer string = new StringBuffer("not");
string.append(" constant");
System.out.println(string);
将打印字符串 "not constant"。这里 "string" 变量是最终的但不是常量。 我希望这会有所帮助