Почему это не хочет компилировать, если в другое состояние, как если (8> 0) будетПеременная инициализации, если Постулаты
public class StartClass {
public static void main(String[] args) {
int i;
boolean b = true;
if (b) {
i = 1;
}
System.out.println(i);//error
}
}
Потому что 'i' не обязательно инициализируется. Компилятор не понимает, что 'b' всегда будет истинным. –
Он работает с '(8> 0)', потому что это заменяется на true. Он также будет работать, если вы объявите 'b' как' final'. – Compass
См. Также [Что такое рациональная для дизайна переменная, возможно, не было инициализировано?] (Http://stackoverflow.com/questions/20283742/what-is-the-design-rational-for-variable-may-not -а-инициализировано) –