常数数据成员

时间:2013-01-15 06:29:00

标签: java constants

当我们使用final关键字将变量声明为常量时,使用static的必要性是什么? 我在大多数使用

的地方看到过

public static final int nVar = 12

表示常量数据成员。

6 个答案:

答案 0 :(得分:4)

final表示该变量可能未被重新分配给另一个对象/原语。

static表示在JVM中运行的所有代码共享相同的变量。

无法重新分配final非静态变量,但每个实例都有自己的副本。

static final个字段(无需创建实例即可访问)通常称为“常量”

final(非静态)实例变量通常称为“不可变字段”

答案 1 :(得分:3)

最终表示,一旦分配了变量值,就无法修改。

静态表示"与班级相关联&#34 ;;没有它,变量与类的每个实例相关联。如果没有,您将为您创建的每个实例添加一个。 static表示只要加载类

,变量就会保留在内存中

声明这样的变量毫无意义。

public final int nVar = 12;

如果不打算修改,为什么每个实例都有一个副本。

因此,Class 常量需要声明为static final,在每个实例的基础上你想要成为 immutable 的变量,你将它们声明为final

答案 2 :(得分:2)

声明它static使您可以访问变量而无需创建该类型的对象。

答案 3 :(得分:1)

“最终”标识符表示无法更改变量的值。

然而,

“static”意味着在类中定义了一个变量实例。

所以final和static是两个不同的东西,但是你经常看到它们一起用来定义一个类的常量。

答案 4 :(得分:1)

一个原因可能是您不需要创建类的对象来访问该常量,这就是您应该/可以将其声明为static的原因。因为你可以使用类名访问它,因为它是静态的。

检查此代码

public class A{
public static final int aa = 1;
}

public class B{
public final int bb = 1;
}

public class Testing{
SOP(A.aa);// a can be accessed with class name
B b = new B();// where to access the constant bb we need to create class object 
SOP(b.bb);
}

答案 5 :(得分:0)

静态变量意味着它在类级别可用。只有该变量的一个实例可用于该类的所有对象。可以修改静态变量,但更改将反映在该类的所有对象中。 最后一个变量意味着它的值在初始化后不能改变。 带有static修饰符的final变量意味着该变量在类级别可用。简而言之,它将作为该类的所有对象的常量