JavaRush /Java блог /Java Developer /Переменные в Java и константы
Автор
Василий Малик
Senior Java-разработчик в CodeGym

Переменные в Java и константы

Статья из группы Java Developer
Для понимания языка Java, очень важно понимать его синтаксис. Один из его ключевых, фундаментальных кирпичиков — это переменные.

Что такое переменная в Java

Переменная в Java — это контейнер, в котором может храниться некоторое значение данных для дальнейшего использования в программе. По сути переменная — это минимальная неделимая единица Java-приложения. Переменные в Java бывают двух видов: предназначенные для для маленьких данных (примитивные переменные) и для более сложных, тяжёлых (ссылочные переменные). Сегодня мы рассмотрим первый случай, когда переменные хранят именно само значение данных. Такие переменные называют примитивными. Примитивные переменные в Java и константы - 1

Объявление переменных в Java

Давайте рассмотрим такой пример:

int x = 9;
Разберем, что мы видим: int — тип переменной, описывающий целые числа, находящиеся в промежутке -2147483648 до 2147483647 x — имя переменной (нам же нужно их отличать между собой, верно?) = знак присваивания какой-то переменной, какого-то значения 9 — её непосредственной значение ; конец данной команды А теперь соберём всё вместе: мы задаём, что переменная типа int, с именем x имеет значение 9. Данный пример имеет сокращенную форму записи, полная выглядит так:

int x; 
x = 9;
В первой строке мы видим объявление переменной с присвоением ей имени, то есть этим мы говорим JVM выделить место под переменную int (4 байта) и задать ей имя x. Во второй мы задаём ей значение 9. До этого у нее было значение, установленное по умолчанию, а именно — 0. Стоит сказать пару слов об именовании переменных. Как правило они пишутся в нижнем верблюжьем стиле. То есть, например, если у нас есть переменная, описывающая количество людей (count of people), подходящее для неё имя будет:

int countOfPeople;
В этом названии первое слово начинается со строчной (маленькой) буквы, а каждое следующее — с заглавной (большой). Это делается для удобства чтения таких имен, так как обычно имена переменных состоят из более чем одного слова.

Переопределение переменных

Вернёмся к нашему примеру с объявлением переменной:

int x = 9;
Если мы однажды положили в переменную какое-то значение, это не значит, что во время выполнения программы переменная x всегда будет иметь значение 9. Мы можем её перезаписать:

x = 4;
Всё почти так же, но мы уже не добавляем тип (int), ведь он прописан при объявлении переменной (объявлении о её существовании). Далее мы только ее переиспользуем, как к примеру здесь мы видим ее перезапись (задаём нашей переменной новое значение, затирая старое). Предположим, что у нас ещё появилась переменная:

int y = 7;
И задав: x = y; Старое значение переменной x будет удалено, перезаписавшись копией значения y, а именно — 7. Также можно задать значение какой-то другой переменной, увеличенное на нужное нам число:

x = y + 5;
Так как у нас переменная y была равна 7, в результате x будет равен 12. Более интересна возможность выполнить данные действия:

x = x + 6;
Что мы здесь видим? Переменной x задается значение, равное прошлому, увеличенному на 6, то есть это будет: 12 + 6 = 18. Эту же запись можно сократить, опустив x :

x =+ 6;

Виды переменных

Приложение в Java состоит из классов и объектов. Рассмотрим, какими бывают Java переменные:
  • переменные объекта;
  • локальные переменные;
  • переменные класса.
Примитивные переменные в Java и константы - 2В качестве класса-примера мы возьмем класс собаки с методом “лаять”:

public class Dog {
   public void bark() {
   }
}

Переменные объекта

Переменные объявляются в классе, но при этом не в методе, конструкторе или блоке.

public class Dog {
public  int value = 9;
   public void bark() {
   }
}
Чтобы вызвать эту переменную, нам нужно для начала создать объект:

Dog dog = new Dog();
dog.value;
Переменные создаются лишь после того, как будет создан объект (то есть после создания объекта с помощью new). В объекте внутренние переменные всегда видимы для всех методов, конструктора или чего-либо внутри этого же объекта. Как говорилось выше, у переменных объекта существуют значения по умолчанию. Для числа значение по умолчанию — равно 0, для логических (boolean) — false, для ссылок на объект — null.

Локальные переменные

Данные переменные объявляются в методах, конструкторах или блоках.

public class Dog {
   public void bark() {
   int value = 9;
   }
}
Локальные переменные существуют только в вызванном блоке кода, при окончании которого они удаляются из памяти. Они видимы лишь в пределах объявленного метода, конструктора или блока. То есть использовать переменную, например, в другом методе нельзя. Модификаторы доступа нельзя использовать для локальных переменных. Какой в них смысл, если дальше границ метода переменную не видно? Данный вид переменных создается, когда метод (или конструктор, или блок) вызывается и уничтожается после завершения.

Переменные класса

Данный вид переменных ещё называют статическими. Они объявляются со словом-модификатором static, но за пределами метода, конструктора или блока.

public class Dog {
public static  int value = 9;
   public void bark() {
   }
}
Вызываем нашу переменную:

Dog.value
Где Dog — это имя класса, к которому прикреплена переменная. Значение по умолчанию такое же, как и у переменных объекта. Для чисел по умолчанию это 0, для boolean — false; для ссылок на объект — null. Статическая переменная всегда одна, независимо от того, сколько объектов создано из класса, ведь она крепится только к классу. Переменные класса создаются при запуске программы и уничтожаются, когда выполнение программы завершено. Статические переменные в Java часто используются, когда объявляются как константы. О них поговорим подробнее.

Что такое константы в Java

Константа — это заданные, фиксированные значения, которые не должны меняться. А что такое константы в программировании? Это некоторое постоянное значение, которое известно до начала работы приложения, при этом оно задается в коде один раз. В Java константы — это переменные, обозначенные специальным словом — final:

final int VALUE = 54;
Здесь мы получаем переменную, которую нельзя изменить после задания ей какого-либо значения. Дело в том, что константы гораздо проще, чем переменные. Они всегда однозначно определены и никогда не меняются. Немного выше мы говорили об именовании переменных, и нам стоит уделить внимание и особенностям именования констант. В константных переменных все слова пишутся БОЛЬШИМИ буквами, разделяемыми с помощью знака подчеркивания _ Например, нам нужна константа, описывающая максимальное значение для чего-либо:

final int MAX_VALUE = 999;
Итак, подытожим: Переменная предоставляется нам как место хранения наших данных (или адрес места), что позволяет управлять приложением. У переменных примитивного типа есть определенный формат данных, размер, диапазон значений, которые могут храниться в памяти. Переменные можно разделять по местонахождению: переменные объекта, локальные, класса. Существует особый вид переменных — константы, которые могут быть глобальными, переменными. Их область видимости — вся программа.
Комментарии (9)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Anonymous #3261746 Уровень 10
12 июля 2023
почему статическая переменная одна,если в задачах мы используем много статических переменных?
YesOn Уровень 13
31 июля 2021
Здравствуйте, поправьте, пожалуйста, опечатку: "int — тип переменной, описывающий целые числа, находящиеся в промежутке -2147483648 до - 2147483647." Должно быть "......-2147483648 до +2147483647.".
Mark Уровень 19
7 октября 2020
s.Р.a.s.1.b.0
Sergio Уровень 3
17 апреля 2020
"x =+ 6;" – ребят, это чё? Критично для знакомства с синтаксисом, если это ошибка. В лекции про методы (после конструкторов/объектов, "полезные ссылки от профессора") – было "cat.age += 10;". Полагаю, это верное сокращение.
null Уровень 4
16 апреля 2020
Ошибочка... x = y + 5; Так как у нас переменная y была равна 3, в результате x будет равен 12.
Nata Уровень 4
9 апреля 2020
Если бы все лекции так объяснялись.... Спасибо огромное!