Java 在运行时在逻辑块内初始化的局部变量的执行?
为什么像if-else这样的逻辑块中的局部变量的初始化可以在java的运行时执行,也可以不执行?有关ex,请参见以下代码:Java 在运行时在逻辑块内初始化的局部变量的执行?,java,variables,local-variables,Java,Variables,Local Variables,为什么像if-else这样的逻辑块中的局部变量的初始化可以在java的运行时执行,也可以不执行?有关ex,请参见以下代码: class Test { public static void main(String args[]) { int x; if(args.length>0) { x=10; } System.out.print(x); } } 如果我只是使用javactest.java进行编译,它会显示编译时错
class Test
{
public static void main(String args[])
{
int x;
if(args.length>0)
{
x=10;
}
System.out.print(x);
}
}
如果我只是使用javactest.java进行编译,它会显示编译时错误,并在传递任何命令行参数时将10打印为输出 代码中的问题是,对于空参数列表,在执行System.out.printx之前,不会初始化x
与成员变量相反,局部变量未使用默认值初始化;在x=10之前,其值未定义,您无法访问该变量。您可以将其声明为int x=0,自己给它一个默认值。您可以展示一个您正在询问的特定代码示例吗?您能更精确一点吗?也许可以为运行时执行提供一个示例,为相反的情况提供另一个示例。我不清楚你在问什么…你的意思是如果它从未进入块?你确定编译器给了你一个错误吗?你以后怎么能执行呢?这可能是关于可能未初始化变量的警告吗?考虑AgsSt==0,在Soal.Out.PrtLnnx?@ DeHaar中打印什么,这是编译器错误,而不是警告:进一步阅读:7和