Пожалуйста, помогите мне понять разницу между постоянными переменными и переменными final
в Java. Я немного смущен этим.
В чем разница между постоянными и конечными переменными в Java?
Ответ 1
Константа - это понятие, свойство переменной.
final
- ключевое слово java для объявления постоянной переменной.
Как указывали другие люди, с семантической/лингвистической точки зрения константная переменная выражения является оксюмороном, и, как таковая, мы могли бы поспорить о ее правильности.
Цитируя спецификацию, мы можем прочитать
Переменная примитивного типа [...], которая является конечной и инициализируется константным выражением во время компиляции (§15.28), называется константной переменной.
Следовательно, я полагаю, что мы можем принять (и считаем правильным) этот бином для нашей цели.
Ответ 2
Constant
не является ключевым словом в Java.
Это понятие, чтобы сделать любую переменную константу. Для этого мы используем ключевое слово final
в Java, так что после инициализации переменной с ключевым словом final никто не может переназначить значение этой переменной.
Ответ 3
В реальном мире существует несколько ценностей, которые никогда не изменятся. Квадрат всегда будет иметь четыре стороны, PI с тремя десятичными разрядами всегда будет 3.142, а день всегда будет иметь 24 часа. Эти значения остаются постоянными. При написании программы имеет смысл представлять их таким же образом - как значения, которые не будут изменены после того, как они были присвоены переменной. Эти переменные известны как константы.
Объявление переменной как константы
При объявлении переменных я показал, что легко присвоить значение переменной int:
int hoursInADay = 24;
Мы знаем, что это значение никогда не изменится в реальном мире, поэтому мы уверены, что оно не меняется в программе. Это можно сделать, добавив модификатор ключевого слова final
:
final int HOURS_IN_A_DAY = 24;
В дополнение к ключевому слову final
вы должны были заметить, что регистр имени переменной был изменен на верхний регистр в соответствии со стандартным соглашением об именах Java. Это значительно упрощает определение переменных в вашем коде.
Если мы сейчас попробуем изменить значение HOURS_IN_A_DAY
:
final int HOURS_IN_A_DAY = 24;
HOURS_IN_A_DAY = 36;
мы получим следующую ошибку от компилятора:
не может присвоить значение конечной переменной HOURS_IN_A_DAY
То же самое относится и к любым другим переменным примитивного типа данных. Чтобы превратить их в константы, просто добавьте ключевое слово final
в их объявление.
Где объявить константы
Как и в случае с обычными переменными, вы хотите ограничить область действия констант тем местом, где они используются. Если значение константы необходимо только в методе, объявите его там:
public class Hours {
public static final int HOURS_IN_A_DAY = 24;
}