Почему инициализация локальных переменных внутри логических блоков, таких как 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 в качестве результата.