当我们使用final关键字将变量声明为常量时,使用static的必要性是什么? 我在大多数使用
的地方看到过 public static final int nVar = 12
表示常量数据成员。
答案 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变量意味着该变量在类级别可用。简而言之,它将作为该类的所有对象的常量