Подтвердить что ты не робот

Почему константы java статичны?

Почему константы java статичны?

class Foo{
    static final int FII = 2 ;
}

В этом я понимаю использование финала? Купите, почему он должен быть статичным? Почему это должна быть переменная класса, а не переменная экземпляра?

4b9b3361

Ответ 1

Если он может меняться по экземпляру класса, то он явно не является константой. Что означало бы получить другое значение pi для каждого экземпляра Math (а не то, что Math даже позволяет создавать экземпляры)? Или другой регистр, нечувствительный к регистру для каждого экземпляра String?

Ответ 2

Если константа не является статической, Java будет выделять память для этой константы в каждом объекте класса (т.е. одну копию константы на объект).

Если константа статическая, будет только одна копия константы для этого класса (т.е. одна копия для каждого класса).

Следовательно, если константа имеет только одно значение, она должна быть объявлена ​​static.

Если константа может иметь другое значение для каждого объекта, например время создания объекта, оно не должно быть объявлено static.

Ответ 3

Это просто так, что вы можете получить к ним доступ без экземпляра этого класса.

Требование создания экземпляра только для доступа к постоянным полям - это пустая трата ресурсов.