


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
и объявили их статическими. К публичным статическим переменным можно обращаться из любого метода программы (да и не только из метода).
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ