it-swarm.com.de

Wie deklariert man eine Konstante in Java

Wir schreiben immer:

public static final int A = 0;  

Frage:

  1. Ist static final die einzige Möglichkeit, eine Konstante in einer Klasse zu deklarieren?
  2. Wenn ich schreibe public final int A = 0; Ist A stattdessen noch ein Konstante oder nur ein Instanzfeld?
  3. Was ist eine Instanzvariable? Was ist der Unterschied zwischen einer Instanzvariable und einem Instanzfeld?
58
Bin_Z
  1. Sie können einen enum-Typ in Java 5 und höher für den von Ihnen beschriebenen Zweck verwenden. Er ist typensicher.
  2. A ist eine Instanzvariable. (Wenn es den statischen Modifikator hat, wird es eine statische Variable.) Konstanten bedeuten nur, dass sich der Wert nicht ändert.
  3. Instanzvariablen sind Datenelemente, die zum Objekt und nicht zur Klasse gehören. Instanzvariable = Instanzfeld.

Wenn Sie über den Unterschied zwischen Instanzvariablen und Klassenvariablen sprechen, existieren Instanzvariablen pro erstelltem Objekt. Während Klassenvariablen unabhängig von der Anzahl der erstellten Objekte nur eine Kopie pro Klassenladeprogramm haben.

Java 5 und höher enum type

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

Wenn Sie den Wert der von Ihnen erstellten Aufzählung ändern möchten, geben Sie eine Mutator-Methode an.

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

Beispiel für den Zugriff auf:

public static void main(String args[]){
  System.out.println(Color.RED.getColor());

  // or

  System.out.println(Color.GREEN);
}
37
Oh Chin Boon

final bedeutet, dass der Wert nach der Initialisierung nicht mehr geändert werden kann. Das macht ihn zu einer Konstanten. static bedeutet, dass anstelle der Zuweisung von Speicherplatz für das Feld in jedem Objekt nur eine Instanz für die Klasse erstellt wird.

So, static final bedeutet nur eine Instanz der Variablen, unabhängig davon, wie viele Objekte erstellt wurden, und der Wert dieser Variablen kann sich niemals ändern.

62
Peter Lundgren

Alles, was static ist, befindet sich auf Klassenebene. Sie müssen keine Instanz erstellen, um auf statische Felder/Methoden zuzugreifen. Statische Variablen werden einmal beim Laden der Klasse erstellt. Instanzvariablen sind die dem Objekt zugeordneten Variablen. Dies bedeutet, dass für jedes von Ihnen erstellte Objekt Instanzvariablen erstellt werden. Alle Objekte haben eine separate Kopie der Instanzvariablen für sich. In Ihrem Fall, wenn Sie es als static final Deklariert haben, ist das nur eine Kopie der Variablen. Wenn Sie es von mehreren Instanzen aus ändern, wird dieselbe Variable aktualisiert (Sie haben jedoch die Variable final, sodass sie nicht aktualisiert werden kann). Im zweiten Fall ist das final int a Ebenfalls konstant, es wird jedoch jedes Mal erstellt, wenn Sie eine Instanz der Klasse erstellen, in der diese Variable deklariert ist.

Schauen Sie sich dieses Java Tutorial zum besseren Verständnis an,

4
Jimmy