web-dev-qa-db-fra.com

Comment déclarer une constante dans Java

Nous écrivons toujours:

public static final int A = 0;  

Question:

  1. Est-ce que static final est le seul moyen de déclarer une constante dans une classe?
  2. Si j'écris plutôt public final int A = 0;, A est-il toujours un constant ou juste un champ d'instance?
  3. Qu'est-ce qu'une variable d'instance? Quelle est la différence entre une variable d'instance et un champ d'instance?
58
Bin_Z
  1. Vous pouvez utiliser un type enum dans Java 5 et versions ultérieures aux fins que vous avez décrites. C'est type sécuritaire.
  2. A est une variable d'instance. (S'il contient le modificateur statique, il devient alors une variable statique.) Constantes signifie simplement que la valeur ne change pas.
  3. Les variables d'instance sont des membres de données appartenant à l'objet et non à la classe. Variable d'instance = champ d'instance.

Si vous parlez de la différence entre variable d'instance et variable de classe, il existe une variable d'instance par objet créé. Alors que la variable de classe n’a qu’une copie par chargeur de classe, quel que soit le nombre d’objets créés.

Java 5 et supérieur 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;
  }
}

Si vous souhaitez modifier la valeur de l'énum que vous avez créé, fournissez une méthode de mutation.

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

Exemple d'accès:

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

  // or

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

final signifie que la valeur ne peut pas être modifiée après l'initialisation, c'est ce qui en fait une constante. static signifie qu'au lieu d'avoir un espace alloué pour le champ dans chaque objet, une seule instance est créée pour la classe.

Ainsi, static final signifie qu'une seule instance de la variable, quel que soit le nombre d'objets créés et que la valeur de cette variable ne puisse jamais changer.

62
Peter Lundgren

Tout ce qui est static est dans le niveau de la classe. Il n'est pas nécessaire de créer une instance pour accéder aux champs/méthodes statiques. La variable statique sera créée une fois lorsque la classe est chargée. Les variables d'instance sont la variable associée à l'objet. Ce qui signifie que des variables d'instance sont créées pour chaque objet que vous créez. Tous les objets auront une copie séparée de la variable d'instance pour eux-mêmes. Dans votre cas, lorsque vous l'avez déclaré en tant que static final, il ne s'agit que d'une copie de la variable. Si vous le modifiez à partir de plusieurs instances, la même variable sera mise à jour (cependant, vous avez la variable final afin qu’elle ne puisse pas être mise à jour). Dans le second cas, le final int a est également constant, mais il est créé chaque fois que vous créez une instance de la classe où cette variable est déclarée.

Consultez ce tutoriel Java pour une meilleure compréhension,

4
Jimmy