Ваш підручник неправильний! Писати такий код безглуздо, і марно витрачати час на його введення та час роботи комп’ютерів.
Як вже говорили інші, компілятор гарантує, що змінним поза методами (змінні класу / екземпляра) надається значення 0, false або null. Як ви, мабуть, знаєте, компілятор не надає змінних всередині значень методів, а натомість змушує вас надавати їм значення перед їх використанням.
Якщо ви зробите щось «правильно», ви виявите, що приблизно 90% -95% ваших «змінних» ніколи не змінюються після того, як їм надано значення. Однак нові програмісти, як правило, роблять такі речі:
int x = 0;
x = 5;
це перешкоджає можливості позначати х як "остаточний". Якщо ви можете позначити х як "остаточний", це запобігає випадковій зміні значення, що запобігає помилкам.
Я б написав код так:
final int x;
x = 5;
Це називається порожнім фіналом (кінцевою змінною, яка не має значення при оголошенні).
Якщо ви пам'ятаєте, що змінні класу / екземпляра ініціалізуються середовищем виконання, тоді, сподіваємось, ви не будете писати код, щоб ініціалізувати їх зі значеннями викидання, і тоді ви можете позначити їх як остаточні.
Моя особиста практика полягає в тому, щоб завжди позначати все як остаточне, поки я не зрозумію, що мені потрібно це змінити, і ніколи не ініціалізувати змінну, поки не дізнаюся фактичне значення, яке я хочу мати. Це робить код швидшим (не помітним, оскільки призначення зазвичай дуже швидке) і безпечнішим, оскільки я рідко випадково змінюю значення, коли цього не слід робити.
Arrays.fill(myArr, 0). Але це все ще смішна пропозиція, насправді, якщо мова йде про ясність, додайте проклятий коментар, не робіть зайвої роботи.