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
   50   51   52   53   54   55   56   57   58   59   60