[Java Silver] À propos de l'initialisation

Initialisation de l'instance

-Initialiser avec ** constructeur **

** * * constant (final) ** peut également être ** initialisé avec le constructeur ** Les constantes non initialisées définies dans la classe peuvent être initialisées dans le constructeur

Exemple)

public class Main{
   public static void main(String[] args){
       Sample a = new Sample(5);
       System.out.println(a.num);   //Est affiché comme 5

   }
}

class Sample{
     final int num;  //Le champ constant n'est pas initialisé à ce stade
     Sample(int num){  //int num est une variable locale avec le même nom que la variable d'instance
         this.num = num;  //Initialiser les constantes dans le constructeur
     }
}

Initialiser le traitement commun du constructeur

-Utiliser un initialiseur (initialiseur d'instance) appelé {} --S'il y a plusieurs constructeurs surchargés, un traitement commun peut être effectué en premier dans l'initialiseur d'instance.

Exemple)

public class Main{
   public static void main(String[] args){
       Sample a = new Sample(5);    //"Exécuter l'initialiseur d'instance"
       System.out.println(a.num);   //5
       
       Sample b = new Sample();    //"Exécuter l'initialiseur d'instance"
       System.out.println(b.num);  //10

   }
}

class Sample{
     final int num;  //Le champ constant n'est pas initialisé à ce stade
     {
        System.out.println("Exécuter l'initialiseur d'instance"); 
     }
     Sample(){
         this.num = 10;
     }
     Sample(int num){  
         this.num = num;  //Initialiser les constantes dans le constructeur
     }
}

Initialiser le champ statique

Les champs statiques peuvent être utilisés sans créer d'instance. Par conséquent, ** ne peut pas être initialisé avec le constructeur **

→ Il est nécessaire d'initialiser avec un initialiseur statique (initialiseur)

Exemple)

public class Main{
   public static void main(String[] args){       
       System.out.println(Sample.num);  //100 et sortie
   }
}

class Sample{
     static final int num;  //Les constantes statiques n'ont pas été initialisées à ce stade
     static {
        num = 100;  //Initialisation des constantes statiques
     }     
}

L'ordre dans lequel les initialiseurs fonctionnent

** Initialiseur-> Instance Initializer-> Constructeur **

Exemple)

public class Main{
   public static void main(String[] args){
       User a = new User();   //Sortie "Exécution de l'initialiseur, exécution de l'initialiseur d'instance, exécution du constructeur"
  }

}

class User{
  private static int count;
  static{
      User.count = 0;  //Initialiser les variables statiques
    System.out.println("Exécutez l'initialiseur");
  }
 
  {
     System.out.println("Exécutez l'initialiseur d'instance");
  }

  User(){
     System.out.println("Exécuter le constructeur");
  }
}

Recommended Posts

[Java Silver] À propos de l'initialisation
À propos de l'héritage (Java Silver)
[Java Silver] À propos de la méthode equals
[Java] À propos des fonctionnalités de Java 12
Mémo Java Silver
[Java] À propos des tableaux
Quelque chose à propos de java
Où est Java
À propos des fonctionnalités Java
À propos des threads Java
Interface [Java]
À propos de la classe Java
À propos des tableaux Java
À propos de l'héritage Java
À propos de l'interface, interface java
Étudier Java Silver 1
À propos de Java Var
À propos de Java Literal
À propos des commandes Java
[Java débutant] À propos de l'initialisation d'un tableau multidimensionnel
À propos de la sortie du journal Java
À propos de l'interface fonctionnelle Java
Java SE8 Silver réussi
À propos de la division de classe (Java)
java bronze argent passé
À propos de [Java] [StreamAPI] allMatch ()
Journée d'étude Java Silver 1
Expérience de passage Java Silver
Résumer l'héritage Java (Java Silver 8)
À propos de la liaison de méthode Java
[Java] À propos des classes anonymes
A propos des méthodes de fractionnement (Java)
[java] Java SE 8 Silver Note
A propos de la liste des baies Java
À propos du polymorphisme Java Super ()
À propos de la classe Java String
À propos des modificateurs d'accès Java
À propos des expressions Java lambda
À propos des points d'entrée Java
Prise en charge de Java 10 Docker
Résumé personnel sur Java
Un mémorandum de l'examen Java8 Silver
Tout sur la programmation Java
À propos de la classe abstraite de Java
[Java Silver] (Gestion des exceptions) À propos des instructions try-catch-finally et try-with-resource
Remarques sur Java GC
Ce que j'ai recherché sur Java 8
À propos des instances Java
Ce que j'ai recherché sur Java 6
[Expérience] Java SE 8 Silver réussi
[Gradle] À propos des tâches du plug-in Java
Dossier d'examen de qualification JAVA Silver
À propos des instructions de déclaration de variable Java
Ce que j'ai recherché sur Java 9
Mémo de la méthode d'étude Java Silver
[Java] À propos de la gestion des exceptions try-catch
À propos des types de chargeur de classe Java
Mémo de préparation à l'examen Java Silver
[Java] À propos de String et StringBuilder