Un bloc d'initialisation est toujours appelée quelle que soit du constructeur que vous souhaitez utiliser. Donc, si la classe en question a plus d'un constructeur et que vous souhaitez exécuter du code indépendamment du constructeur utilisé, utilisez un bloc d'initialisation. Cependant, lorsque j'utilise des valeurs par défaut, je les attribue directement. Si elles sont constantes, puis ajouter final
à la liste des modificateurs aussi bien.
private static final String VAL1 = "VALUE";
Mise à jour depuis que vous avez radicalement changé la question, voici une réponse renouvelée:
1) Où avez-vous utilisé la plupart du temps le bloc d'initialisation?
Pour exécuter du code quel que soit le constructeur utilisé.
2) Pouvez-vous utiliser pour attribuer des valeurs aux variables d'instance statiques?
Vous aurez besoin d'un bloc d'initialisation static
.
private static final String FOO;
static {
FOO = "bar";
}
Cela présente l'avantage que vous pouvez faire plus que simplement attribuer une valeur. Par exemple. l'obtenir à partir d'une méthode et gérer l'exception:
static {
try {
FOO = getItSomehow();
} catch (Exception e) {
throw new ExceptionInInitializerError(e);
}
}
3) Comment est-ce différent d'assigner en utilisant un constructeur?
Il est toujours affecté quel que soit le constructeur utilisé.
4) Mon livre indique que le bloc d'initialisation est exécuté lorsque la "classe est chargée". Que signifie charger une classe?
Le livre est en train de parler d'un bloc d'initialisation statique . Une classe est généralement chargée lorsque vous la référencez pour la première fois dans votre code. Vous pouvez également le charger de force par Class#forName()
(comme avec les pilotes JDBC). J'ai posté une réponse avec plus d'exemples et d'explications avant here.
Espérons que cela aide.
Plusieurs questions par article est * trop large * un message. – Raedwald