Я новичок в Java, и у меня есть немного проблем с пониманием концепции объявления и инициализации переменных.Java: Confused о концепции инициализации переменных
Например, когда я делаю:
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);
}
}
Это не компилирует и говорит, что «переменная у не может быть инициализирован.» Однако у него нет никаких проблем, если я скажу ему просто распечатать значение x после цикла. Конечно, это сработало бы, если бы я просто объявил это в начале (говоря int = 0 или что-то в этом роде), но я хотел знать, почему x напечатан, но не y.
Заранее спасибо!
Edit:
Я понимаю, что компилятор фактически не проверяет внутри цикла, чтобы увидеть, если переменная будет инициализирована или не так просто говорит, что это не может быть инициализирован, но тогда почему работает ли следующий код? Проверяет ли компилятор цикл 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);
}
}
Edit 2:
Похоже, что это дает мне ту же ошибку, если я на самом деле дать еще одно условие для еще части так, что это будет:
if (x == 0) {
y = 1;
}
else if (x == 1) {
y = 2;
}
Так Я предполагаю, что другой пример работал, поскольку y был инициализирован как в части if, так и в else, что означает, что y всегда будет инициализироваться независимо от того, какое условие задано. Теперь я действительно понимаю. Спасибо!!
Я предполагаю, что '=' в объявлении - это опечатка – Bozho
@Bozho да, это была опечатка .. Я исправил ее, спасибо! – Dennis