Когда можно инициализировать final переменную? Может ли final переменная быть аргументом метода? Есть ли у final переменной значение по умолчанию?
По порядку:
1. Когда можно инициализировать final переменную?
Можно проинициализировать сразу
public class Test {
private final int i = 8;
}
Можно в конструкторе (если эта переменная не static)
public class Test {
private final int i;
public Test(int i) {
this.i = i;
}
}
А можно в блоке инициализации (static переменная в static блоке, non-static - в non-static)
public class Test {
private static final int i1;
private final int i2;
static {
i1 = 8;
}
{
i2 = 8;
}
}
2. Может ли final переменная быть аргументом метода?
Может. Значение данной переменной нельзя будет изменить внутри самого метода (см. пример)
class Demo {
public static void main(String[] args) {
int i = 10;
method(i);
i = 12; // <- можно изменить занчение, т. к. i не final
}
public static void method(final int i) {
i = 11; // <- нельзя изменить значение здесь, т. к.
// аргумент передается с модификатором final
}
}
3. Есть ли у final переменной значение по умолчанию?
Нет. Значение должно быть задано вручную (см. п. 1)
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости