如何在Java中声明一个常量

我们总是写:

public static final int A = 0; 

题:

  1. static final是在类中声明常量的唯一方法吗?
  2. 如果我写public final int A = 0; 相反, A仍然是一个常量或只是一个实例字段
  3. 什么是实例variables实例variables实例字段有什么区别?
  1. 为了达到上述目的,您可以在Java 5及更高版本中使用enumtypes。 这是types安全的。
  2. A是一个实例variables。 (如果它有静态修饰符,那么它就成为一个静态variables。)常量意味着该值不会改变。
  3. 实例variables是属于对象而不是类的数据成员。 实例variables=实例字段。

如果您正在讨论实例variables和类variables之间的差异,则每个创build的对象都存在实例variables。 虽然类variables只有一个副本每个类加载器,无论创build的对象的数量。

Java 5和以上的enumtypes

 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将被更新(但是,你有finalvariables,所以它不能更新)。 在第二种情况下, final int a也是常量,但每次创build声明该variables的类的实例时都会创build它。

为了更好地理解这个Java教程 ,