В Java переменные final могут быть инициализированы только один раз. Инициализация final переменных может происходить как при их объявлении, так и в конструкторе класса. Важно отметить, что не инициализированная final переменная является ошибкой во время компиляции. Если final переменная имеет ссылочный тип данных, то после ее инициализации вы можете изменять ее содержимое, но нельзя присвоить ей новое значение:
public class Example {
final int x = 1;
// объявление и инициализация final переменной
public Example () {
final int y;
// объявление final переменной без инициализации
y = 2;
// инициализация final переменной }
public void modify(final int z) {
// нельзя присваивать новое значение z, так как он помечен как final
System.out.println("z = " + z);
}
}
В данном примере мы можем изменять содержимое ссылочной final переменной s, но не можем присвоить ей новый объект:
public class Example {
final String s = "Hello";
// объявление и инициализация final переменной
public void modify() {
s = "World";
// ошибка компиляции! final переменную нельзя изменить
System.out.println("String: " + s);
}
}
При объявлении переменной final без ее инициализации компилятор выдаст ошибку. Инициализация может быть произведена при объявлении переменной, в блоках инициализации экземпляра и конструкторе.
1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions
Tелеграмм канал: https://t.me/DEBAGanov
Мое резюме: https://github.com/DEBAGanov