Выполнение локальных переменных, инициализированных внутри логических блоков во время выполнения? - PullRequest
0 голосов
/ 26 октября 2018

Почему инициализация локальных переменных внутри логических блоков, таких как if-else, может выполняться или не выполняться во время выполнения в Java? Например, см. Ниже код:

 class Test
 {
  public static void main(String args[])
  {
    int x;
    if(args.length>0)
    {
        x=10;
    }
    System.out.print(x);
  }
}

Если я просто скомпилирую, используя javac Test.java , он показывает ошибку времени компиляции и при передаче любого аргумента командной строки выводит 10 в качестве результата.

1 Ответ

0 голосов
/ 26 октября 2018

Проблема в вашем коде состоит в том, что для пустого списка аргументов x не будет инициализирован до выполнения System.out.print(x).

Локальные переменные не инициализируются значением по умолчанию, в отличие от переменных-членов; до x = 10 его значение не определено, и вы не можете получить доступ к переменной. Вы можете объявить его как int x = 0, задав для него значение по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...