2016-11-21 5 views
0

Почему это не хочет компилировать, если в другое состояние, как если (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 
} 
} 
+2

Потому что 'i' не обязательно инициализируется. Компилятор не понимает, что 'b' всегда будет истинным. –

+1

Он работает с '(8> 0)', потому что это заменяется на true. Он также будет работать, если вы объявите 'b' как' final'. – Compass

+0

См. Также [Что такое рациональная для дизайна переменная, возможно, не было инициализировано?] (Http://stackoverflow.com/questions/20283742/what-is-the-design-rational-for-variable-may-not -а-инициализировано) –

ответ

0

Ответ:

Java не дает initial value для переменная, объявленная внутри методов ..

int i объявлен внутри основного метода, так что нет никакого начального значения по умолчанию для этого ...

если б никогда не добирается, чтобы быть правдой, то не я никогда не инициализируется,

Так компилятор жалуется, потому что может случиться так, что я не имеет значения Ergo: вы не собираетесь быть в состоянии сделать System.out.println(i);

 Смежные вопросы

  • Нет связанных вопросов^_^