Votre livre est faux! La rédaction d'un tel code est inutile, et un gaspillage de votre temps à taper et les ordinateurs moment de l'exécution.
Comme d'autres l'ont dit, le compilateur garantit que les variables en dehors de méthodes (classe/variables d'instance) donne une valeur de 0, false ou null. Comme vous le savez probablement, le compilateur ne donne pas de variables à l'intérieur des méthodes de valeurs, et au lieu de cela vous oblige à leur donner une valeur, avant de servir.
Vous trouverez, si vous faites les choses "droit" qu'environ 90% -95% de votre "variables" ne jamais changer une fois qu'ils sont donné une valeur. Cependant, les nouveaux programmeurs ont tendance à faire les choses comme ceci:
int x = 0;
// some code that never uses x
x = 5;
// more code that only reads x and never modifies it.
cela vous empêche d'être en mesure de marque x "final". Si vous êtes en mesure de marque x "final" alors il empêche toute modification accidentelle de la valeur, ce qui empêche de bugs.
Je voudrais écrire le code comme:
final int x;
// some code that never uses x
x = 5;
// more code that only reads x and never modifies it.
Cela s'appelle un vide final (une dernière variable qui n'a pas de valeur si elle est déclarée).
Si vous vous souvenez de cette classe/instance variables sont initialisées par le moteur d'exécution puis vous permettra, je l'espère, de ne pas écrire du code pour initialiser avec jeter des valeurs, et puis vous pouvez les marquer comme final.
Ma pratique personnelle est de toujours marquer tout comme définitive jusqu'à ce que je trouve que j'ai besoin de le modifier, et de ne jamais initialiser une variable jusqu'à ce que je connais la vraie valeur que je veux qu'il ait. Ce faisant rendre le code plus rapide (pas perceptible, car les missions sont en général très rapide) et plus sûr depuis que j'ai rarement accidentellement modifier une valeur où je ne devrais pas.