How to declare a constant in Java
我们总是写:
1
| public static final int A = 0; |
问题:
static final是声明类中常量的唯一方法吗?
如果我改为写public final int A = 0;,那么A是常量还是仅仅是一个实例字段?
什么是实例变量?实例变量和实例字段有什么区别?
final表示初始化后不能更改值,这就是使其成为常量的原因。static意味着,除了为每个对象中的字段分配空间之外,只为类创建一个实例。
因此,static final意味着无论创建了多少个对象,变量的值都只能有一个实例。
- 不是Java专家,而是EDCOX1,0听起来像"只读字段",而"常量"在编译时应该是常数。
- - 1。警告:final int不能用在switch语句中,这使我相信final int不是编译时常量。
您可以在Java 5中使用EDCOX1×4的类型,并针对您所描述的目的继续使用。它是类型安全的。
A是一个实例变量。(如果它有静态修饰符,那么它就变成一个静态变量。)常量只是意味着值不会改变。
实例变量是属于对象而不是类的数据成员。实例变量=实例字段。
如果您谈论的是实例变量和类变量之间的区别,那么每个创建的对象都存在实例变量。尽管类变量对于每个类加载器只有一个副本,而不管创建的对象的数量如何。
Java 5和UP EDCOX1×4类型
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| 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方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| 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;
}
} |
访问示例:
- 第二个问题,因为a不能更改,它仍然是一个实例变量?
- 是的,它仍然是一个实例变量。它存在于每个创建的对象中。
- 是的,但如果不能更改它,您也可以将其设置为静态变量:)
任何是static的东西都在类级别。您不必创建实例来访问静态字段/方法。加载类时将创建一次静态变量。实例变量是与对象关联的变量。这意味着实例变量是为您创建的每个对象创建的。所有对象都将有单独的实例变量副本。在您的例子中,当您声明它为static final时,这只是变量的一个副本。如果您从多个实例更改它,同一个变量将被更新(但是,您有final变量,因此无法更新)。在第二种情况下,final int a也是常量,但是每次创建声明该变量的类的实例时都会创建它。
看看这个Java教程,以便更好地理解,