1. Локальні змінні
Давай трохи серйозніше поговоримо про змінні. Але цього разу обговоримо не їх внутрішній устрій, а взаємодію змінних із кодом, в якому вони знаходяться.
Усі змінні, які оголошені всередині методів, називаються локальними змінними. Локальна змінна існує тільки в тому блоці коду, в якому вона оголошена. Або, якщо бути точніше, існує з моменту оголошення і до кінця блоку коду, в якому її оголошено.
Давай для простоти розглянемо приклад:
| Код | Доступність змінних |
|---|---|
|
|
Давай проговоримо про доступність локальних змінних ще раз. Ось є блок коду, що складається з фігурних дужок: це може бути тіло методу, тіло циклу або просто блок коду у умовного оператора. Змінна, оголошена у блоці коду, існує до кінця цього блоку коду.
Якщо змінну оголосити у тілі циклу, вона й буде існувати тільки у тілі циклу. Створюючись і знищуючись на кожному витку циклу.
Приклад:
| Код | Доступність змінних |
|---|---|
|
|
Другу локальну змінну з іменем b ми змогли оголосити тільки тому, що перша змінна b не видно у блоці коду, де оголошена друга змінна b.
2. Змінні-параметри
Як ми вже раніше казали, у кожного методу можуть бути змінні-параметри. А що з їхньою видимістю і часом життя?
Тут все досить просто. Змінні-параметри створюються, коли управління передається в код методу (код методу починає виконуватись), і видаляються, коли робота методу завершується. Видимі вони в усьому тілі методу.
Приклад:
| Код | Доступність змінних |
|---|---|
|
|
Як ми вже казали раніше, args — це просто змінна типу масив строк. І, як і всі змінні-параметри, вона доступна всюди всередині тіла методу. Хоча в наших прикладах ми її зазвичай ігноруємо.
3. Змінні класу
Як ти пам’ятаєш із лекцій 1-го рівня, клас може містити функції і змінні. Функції при цьому прийнято називати «методами класу», а змінні — «змінними класу» або «полями класу». Фактично в рамках Java це синоніми.
Що ж таке змінні (або поля) класу?
Змінні класу — це змінні, які оголошені не в методі, а в класі.
До них можна звертатися з будь-якого методу класу. Грубо кажучи, змінні класу — це загальні змінні для всіх методів класу.
Приклад:
| Код | Доступність змінних |
|---|---|
|
|
У цьому прикладі у нас є два методи — add() і remove(). Метод add() збільшує змінні класу sum і count, а метод remove() зменшує змінні sum і count. Обидва методи працюють із загальними змінними класу.
Локальні змінні існують, поки виконується метод. Змінні ж класу існують стільки, скільки існує об’єкт класу, до якого вони належать. Детальніше про об’єкти класу ти дізнаєшся на наступному рівні.
4. Статичні змінні
Змінні класу, як і методи класу, бувають статичними та нестатичними (звичайними). Статичні методи можуть звертатись тільки до статичних змінних.
На 11-му рівні ми розберемо роботу статичних змінних і методів, а також зрозуміємо причини таких обмежень.
Щоб зробити змінну класу статичною, потрібно перед її оголошенням написати ключове слово static.
Статичні змінні прив’язані не до об'єкта класу, в якому вони оголошені, а до самого класу. Тому вони існують, навіть якщо не створено жодного об’єкта типу цього класу. Звертатися до них з інших класів можна за допомогою конструкції виду:
ClassName.variableName
Приклад:
| Код | Доступність змінних |
|---|---|
|
|
У прикладі вище ми створили окремий клас Storage, винесли в нього змінні count і sum, та оголосили їх статичними. До публічних статичних змінних можна звертатись з будь-якого методу програми (і не тільки з методу).
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ