Page 55 - 6253
P. 55
// у цьому місці змінні а та b є видимі
System.out.println("a = " + a + "b = " + b);
}
// у цьому місці видима тільки змінна а
// System.out.println("a = " + a + "b = " + b);
}
Змінні створюються тільки при вході в їх область видимості і знищуються при
виході з неї. Це означає, що змінна втратить своє значення зразу після виходу з її
області видимості. Тобто, змінна оголошена всередині методу не буде зберігати своє
значення між моментами звернення до цього методу. Отже, ініціалізація змінної
буде відбуватися заново при кожному входженні у область її видимості.
У деяких випадках бувають ситуації, коли необхідно виконати приведення одно
типу даних до іншого. Мова Java наділена інструментами автоматичного
приведення простих типів, що полягає у їх підвищенні. Існує декілька простих
правил підвищення типу, що застосовуються до виразів (рис. 3.1). По-перше, тип
всіх значень byte, short і char підвищується до int. По-друге, якщо один з
операндів має тип long, то тип всього виразу підвищується до long. Якщо хоча б
один операнд має тип float, то тип всього виразу підвищується до float і якщо
будь-який з операндів має тип double, результат також буде типу double.
Рисунок 3.1 – Правила приведення простих типів у мові Java
Хоча автоматичне підвищення типу є досить зручним інструментом, воно може
призводити до прикрих помилок під час компіляції. Наприклад, наступний зовні
абсолютно коректний код призводить до виникнення певних проблем:
byte a = 25;
a = a + 50; // Значення типу int не може бути присвоєне
змінній типу byte
Компілятор робить спробу зберегти у змінну a значення виразу 25 + 50, що є
цілком коректним значенням типу byte. Однак, оскільки під час обчислення виразу
54