Ответ
Константа в Java — это атрибут (поле) класса, а не экземпляр класса. Точнее, это статическое финальное поле (static final).
Ключевые характеристики:
static: Поле принадлежит самому классу, а не какому-либо объекту. Оно существует в единственном экземпляре в памяти (в области Metaspace/PermGen), независимо от количества созданных объектов.final: Значение поля может быть присвоено только один раз (при объявлении или в статическом блоке инициализации) и не может быть изменено.
Пример и доступ:
public class MathConstants {
// Константа — статическое финальное поле класса
public static final double PI = 3.141592653589793;
private static final int MAX_RETRIES = 5;
}
// Использование: доступ через имя КЛАССА, а не объекта
double radius = 10.0;
double circleArea = MathConstants.PI * radius * radius;
// Это НЕ константа (это поле объекта, у каждого объекта может быть свое значение)
public class Person {
private final int id; // final, но не static — поле экземпляра
}
Важно: Для примитивных типов и String (если значение известно на этапе компиляции) такие константы могут быть встроены компилятором прямо в байт-код использующих их классов.