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
і оголосили їх статичними. До публічних статичних змінних можна звертатися з будь-якого методу програми (та й не тільки з методу).