Я новичок в Java, и у меня возникли проблемы с пониманием концепции объявления и инициализации переменных.
Например, когда я делаю:
public class Foo {
public static void main (String[] args) {
int x, y;
for (x = 0 ; x < 10 ; x++) {
y = x + 1;
}
System.out.println(x);
System.out.println(y);
}
}
Он не компилируется и говорит, что «переменная y, возможно, не была инициализирована».Тем не менее, у меня не будет никаких проблем, если я скажу ему просто распечатать значение x после цикла.Конечно, это сработало бы, если бы я просто объявил это в начале (говоря, что int y = 0; или что-то в этом роде), но я хотел знать, почему печатается x, а не y.
Заранее спасибо!
Редактировать:
Я понимаю, что компилятор фактически не проверяет внутри цикла, чтобы увидеть, будет ли переменная инициализирована или неттак что он просто говорит, что не мог быть инициализирован, но тогда почему работает следующий код?Проверяет ли компилятор цикл if, но не цикл for?
public class Foo {
public static void main (String[] args) {
int x = 0, y;
if (x == 0) {
y = 1;
}
else {
y = 2;
}
System.out.println(y);
}
}
Редактировать 2:
Похоже, это выдает мне ту же ошибку, если я фактически даю другое условие длячасть else, так что это будет:
if (x == 0) {
y = 1;
}
else if (x == 1) {
y = 2;
}
Так что я думаю, что другой пример сработал, так как y был инициализирован как в части if, так и в else, что означает, что y всегда будет инициализироваться независимо отусловие даноТеперь я действительно понимаю это.Спасибо !!