Что такое константа в java
Для хранения данных в программе предназначены переменные . Переменная представляет именованную область памяти, которая хранит значение определенного типа. Каждая переменная имеет тип, имя и значение. Тип определяет, какую информацию может хранить переменная или диапазон допустимых значений.
Переменные объявляются следующим образом:
тип_данных имя_переменной;
Например, определим переменную, которая будет называться x и будет иметь тип int :
int x;
В этом выражении мы объявляем переменную x типа int . То есть x будет хранить некоторое число не больше 4 байт.
В качестве имени переменной может выступать любое произвольное название, которое удовлетворяет следующим требованиям:
- имя может содержать любые алфавитно-цифровые символы, а также знак подчеркивания, при этом первый символ в имени не должен быть цифрой
- в имени не должно быть знаков пунктуации и пробелов
- имя не может быть ключевым словом языка Java
Кроме того, при объявлении и последующем использовании надо учитывать, что Java — регистрозависимый язык, поэтому следующие объявления int num; и int NUM; будут представлять две разных переменных.
Объявив переменную, мы можем присвоить ей значение:
int x; // объявление переменной x = 10; // присвоение значения System.out.println(x); // 10
Также можно присвоить значение переменной при ее объявлении. Этот процесс называется инициализацией :
int x = 10; // объявление и инициализация переменной System.out.println(x); // 10
Если мы не присвоим переменной значение до ее использования, то мы можем получить ошибку, например, в следующем случае:
int x; System.out.println(x);
Через запятую можно объявить сразу несколько переменных одного типа:
int x, y; x = 10; y = 25; System.out.println(x); // 10 System.out.println(y); // 25
Также можно их сразу инициализировать:
int x = 8, y = 15; System.out.println(x); // 8 System.out.println(y); // 15
Отличительной особенностью переменных является то, что мы можем в процессе работы программы изменять их значение:
int x = 10; System.out.println(x); // 10 x = 25; System.out.println(x); // 25
Ключевое слово var
Начиная с Java 10 в язык было добавлено ключевое слово var , которое также позволяет определять переменную:
var x = 10; System.out.println(x); // 10
Слово var ставится вместо типа данных, а сам тип переменной выводится из того значения, которое ей присваивается. Например, переменной x присваивается число 10, значит, переменная будет представлять тип int.
Но если переменная объявляется с помощью var, то мы обязательно должны инициализировать ее, то есть предоставить ей начальное значение, иначе мы получим ошибку, как, например, в следующем случае:
var x; // ! Ошибка, переменная не инициализирована x = 10;
Константы
Кроме переменных, в Java для хранения данных можно использовать константы . В отличие от переменных константам можно присвоить значение только один раз. Константа объявляется также, как и переменная, только вначале идет ключевое слово final :
final int LIMIT = 5; System.out.println(LIMIT); // 5 // LIMIT=57; // так мы уже не можем написать, так как LIMIT - константа
Как правило, константы имеют имена в верхнем регистре.
Константы позволяют задать такие переменные, которые не должны больше изменяться. Например, если у нас есть переменная для хранения числа pi, то мы можем объявить ее константой, так как ее значение постоянно.
Константы в Java
Константа — постоянное значение, известное до начала работы программы и заданное в коде один раз.
Почему это удобно:
- Если вы используете значение многократно, а в ходе разработки его потребуется изменить, достаточно будет одной правки.
- Вместо длинного значения можно ставить в коде короткое имя константы.
- Нет риска ошибиться при очередном вводе значения.
По логике это надо бы называть «постоянной» — в противоположность переменной, — но традиция уже сложилась.
Константа может хранить число, строку, символ, ссылку на объект и др. Значение константы еще называют литералом (от англ. literal — буквальный), потому что его записывают как есть — без предварительных вычислений.
При объявлении констант в Java используют ключевое слово final — оно показывает, что литерал не должен меняться. Именовать константы принято заглавными буквами со знаком подчеркивания вместо пробела: ВОТ_ТАК.
Пример строковой константы:
public static final String MY_CONSTANT="Мой текст"; //создаем строку и присваиваем ей постоянное значение
Модификаторы public и static означают, что перед нами публичная константа уровня класса — без привязки к отдельным объектам, классам и т.д. Это аналог глобальной константы в Java. Значение константы всегда указывают при её создании. Если инициализация отложена, перед нами не константа, а «финальная переменная». Её значение тоже обычно задают только один раз, но:
- оно может быть получено в результате вычислений;
- если внутри финальной переменной лежит объект, его свойства можно менять, т.к. финализация действует на ссылку, а не на значение.
Важно следить, чтобы значение константы нигде не конфликтовало с логикой вычислений. Например, скорость звука может быть константой в одной среде, но в разных средах она разная. Если в коде мы сравниваем что-то со скоростью звука, хорошим вариантом будет создать финальную переменную, значение которой можно будет переопределять в зависимости от среды.
Неименованные константы в Java
Неименованная константа — постоянное произвольное значение, которое вносят в код однократно:
if (i 5 ) // 5 - это константа;
Если значение нужно использовать ещё где-то, лучше вынести его в именованную константу или финальную переменную.
Константы встроенных классов Java
Класс Integer в Джаве отвечает за обработку целых чисел типа int. Ограничителями диапазона значений int служат константы MIN_VALUE (минимальное значение) и MAX_VALUE (максимальное). Константы с теми же именами существуют и в остальных классах для обработки числовых данных: byte, long, float, double. При создании объекта нужного типа классы обращаются к пулам — массивам констант Java, где хранятся допустимые элементы диапазона.
Где хранить константы
Новички часто спрашивают, допустимо ли держать константы в интерфейсе или обязательно раскладывать их по классам. Единого ответа нет, но логичнее хранить константы ближе к месту использования. Общие для нескольких не связанных между собой классов константы можно вынести в отдельный класс.
Java: Константы
Некоторые данные никогда не меняются — например, математические постоянные. Возьмем число π. Приближенно оно всегда равно 3.14 и не может измениться.
Для обращения к подобным данным в Java принято использовать константы:
final var pi = 3.14; System.out.println(pi); // 3.14
В отличие от переменных, в начале определения константы используют ключевое слово final . Оно сообщает компилятору запрет на изменение. Любая попытка поменять константу приведет к ошибке.
Константа, как и переменная, может использоваться в любом выражении. Единственное ограничение — константу нельзя изменить, что звучит довольно логично.
Задание
Создайте константу dragonsBornCount и запишите в неё число 3 — это количество драконов, родившихся у Дайенерис. Выводить значение на экран не требуется.
Упражнение не проходит проверку — что делать?
Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:
- Обязательно приложите вывод тестов, без него практически невозможно понять что не так, даже если вы покажете свой код. Программисты плохо исполняют код в голове, но по полученной ошибке почти всегда понятно, куда смотреть.
В моей среде код работает, а здесь нет
Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.
Мой код отличается от решения учителя
Это нормально , в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.
В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.
Прочитал урок — ничего не понятно
Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.
Кстати, вы тоже можете участвовать в улучшении курсов: внизу есть ссылка на исходный код уроков, который можно править прямо из браузера.
Константы в Java
Наверняка Вы помните еще со школы, что есть такое понятие, как «константы», то есть фиксированные значения, которые не должны меняться. Например, число пи — это константа. Так вот достаточно часто при написании программ, необходимо использовать константу.
Как сделать переменную константой?
1. Для того, чтобы переменную сделать константой, необходимо использовать ключевое слово final.
2. Константы в программе принято писать большими буквами , чтобы отличать их от обычных переменных.
3. Если в программе происходит попытка изменить константу, компилятор javac выдаст сообщение об ошибке. Потому что значение константы Вы можете задать только 1 раз.
Давайте рассмотрим на практике.
Задача:
Вычислить периметр круга при разных значениях радиуса:
Решение:
Периметр круга вычисляется по формуле: P= 2πR
P — Периметр круга (длина окружности)
π — число пи (3.1415)
R — радиус круга (окружности)