我们总是写:
public static final int A = 0;
题:
- 是在类中
static final
声明常量的唯一方法吗? - 如果我改写
public final int A = 0;
,是A
一个常量还是一个实例字段? - 什么是实例变量?实例变量和实例字段有什么区别?
Answers:
enum
在Java 5及更高版本中使用一种类型进行描述。这是类型安全的。如果您要谈论实例变量和类变量之间的区别,则每个创建的对象都存在实例变量。尽管类变量每个类加载器只有一个副本,而不管创建的对象数量如何。
Java 5的和最多enum
型
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;
}
}
如果要更改已创建的枚举的值,请提供一个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
意味着没有为每个对象中的字段分配空间,而是为该类创建了一个实例。
因此,static final
无论创建了多少个对象,该变量仅意味着一个实例,并且该变量的值永远不会改变。
final
对我来说听起来像是“只读字段”,并且“常数”在编译时应该是恒定的
final int
不能在switch
语句中使用A ,这使我认为afinal int
不是编译时常量。