У меня есть следующий код:Статические переменные процесса инициализации
public class StaticKindOfThing {
static int a =getValue();
static int b = 10;
public static int getValue()
{
return b;
}
public static void main (String []args)
{
System.out.println(a);
}
}
Я знаю, что переменные по умолчанию установлено значение 0, однако это не произошло во время выполнения? Из вышеприведенного кода кажется, что инициализация по умолчанию до 0 выполняется до времени выполнения. В противном случае getValue должен давать ошибку компиляции или исключение времени выполнения, не находя значение. Так что мой вопрос. Переменная static int b = 10;
получает значение 0 по умолчанию во время компиляции?
вывод 0 фактически не 10 – Rollerball
Это потому, что вы не поставили значение a в статическом блоке. попробуйте поставить это в статический блок и увидеть результат. !! –
Попробуйте следующее: - static int a; static { a = getValue(); } –