Константы в Java

Как объявлять и использовать константы в Java, какими они бывают и чем удобны.
30 октября 2017Cbc0f0509128ea8a7487ec71c1240fb531db396bМария Лисянская1574195

Константа — постоянное значение, известное до начала работы программы и заданное в коде один раз.

Почему это удобно:

  • Если вы используете значение многократно, а в ходе разработки его потребуется изменить, достаточно будет одной правки.
  • Вместо длинного значения можно ставить в коде короткое имя константы.
  • Нет риска ошибиться при очередном вводе значения.

По логике это надо бы называть «постоянной» — в противоположность переменной, — но традиция уже сложилась.

Константа может хранить число, строку, символ, ссылку на объект и др. Значение константы еще называют литералом (от англ. 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_developerjava languagejava
Нашли ошибку в тексте? Напишите нам.

Новые комментарии