如何在Java中声明常量?

2022-08-31 13:29:53

我们总是这样写:

public static final int A = 0;  

问题:

  1. 在类中声明常量的唯一方法是什么?static final
  2. 如果我改为写入,仍然是一个常量还是只是一个实例字段public final int A = 0;A
  3. 什么是实例变量实例变量和实例字段之间有什么区别?

答案 1

final意味着初始化后无法更改该值,这就是使其成为常量的原因。 意味着不是为每个对象中的字段分配空间,而是只为类创建一个实例。static

因此,意味着无论创建多少个对象,都只有变量的一个实例,并且该变量的值永远不会更改。static final


答案 2
  1. 您可以在 Java 5 及更高版本中使用类型来实现您所描述的目的。它是类型安全的。enum
  2. A 是实例变量。(如果它具有静态修饰符,则它将成为静态变量。常量只是意味着值不会改变。
  3. 实例变量是属于对象而不是类的数据成员。实例变量 = 实例字段。

如果您正在谈论实例变量和类变量之间的区别,则每个创建的对象都存在实例变量。而类变量每个类装入器只有一个副本,而不管创建的对象数量如何。

Java 5 及更高版本的枚举类型

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;
  }
}

如果要更改已创建的枚举的值,请提供赋值函数方法。

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);
}

推荐