如何在Java中声明一个常量
我们总是写:
public static final int A = 0;
题:
-
static final
是在类中声明常量的唯一方法吗? - 如果我写
public final int A = 0;
相反,A
仍然是一个常量或只是一个实例字段 ? - 什么是实例variables ? 实例variables和实例字段有什么区别?
- 为了达到上述目的,您可以在Java 5及更高版本中使用
enum
types。 这是types安全的。 - A是一个实例variables。 (如果它有静态修饰符,那么它就成为一个静态variables。)常量意味着该值不会改变。
- 实例variables是属于对象而不是类的数据成员。 实例variables=实例字段。
如果您正在讨论实例variables和类variables之间的差异,则每个创build的对象都存在实例variables。 虽然类variables只有一个副本每个类加载器,无论创build的对象的数量。
Java 5和以上的enum
types
public enum Color{ RED("Red"), GREEN("Green"); private Color(String color){ this.color = color; } private String color; public String getColor(){ return this.color; } public String toString(){ return this.color; } }
如果你想改变你创build的枚举的值,提供一个mutator方法。
public enum Color{ RED("Red"), GREEN("Green"); private Color(String color){ this.color = color; } private String color; public String getColor(){ return this.color; } public void setColor(String color){ this.color = color; } public String toString(){ return this.color; } }
访问示例:
public static void main(String args[]){ System.out.println(Color.RED.getColor()); // or System.out.println(Color.GREEN); }
final
意味着该值在初始化后不能被改变,这就是它的一个常数。 static
意味着不是为每个对象中的字段分配空间,而只为该类创build一个实例。
所以, static final
意味着只有一个variables的实例,无论创build多less个对象,该variables的值永远不会改变。
任何static
东西都在课堂上。 您不必创build实例来访问静态字段/方法。 加载类时,会创build一个静态variables。 实例variables是与对象关联的variables。 这意味着为您创build的每个对象创build实例variables。 所有的对象都有独立的实例variables副本。 在你的情况下,当你声明它是static final
,这只是一个variables的副本。 如果你从多个实例改变它,相同的variables将被更新(但是,你有final
variables,所以它不能更新)。 在第二种情况下, final int a
也是常量,但每次创build声明该variables的类的实例时都会创build它。
为了更好地理解这个Java教程 ,