局部变量初始化的Java
public class LocalVariables {
static public void main(String args[]){
int var;
if(args.length > 0){
var = 10;
}
else{
var = 20;
}
System.out.println(var);
}
}
这里如果我删除else
部分它显示编译错误为:局部变量初始化的Java
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The local variable var may not have been initialized
解释局部变量值是如何初始化,如果我用else
一部分。
看它这样当if
条件在你的代码不被满足会发生什么?的原因,你会得到一个错误说:
局部变量VAR 可能尚未初始化
,是因为如果条件为false
你真的没有var
初始化,你做?
另一方面,else
正在为您确保现有代码的初始化。
当IF条件不满足时,输出为20。告诉我如何确保初始化为什么不是部分? –
一旦你删除'else'部分和你的args.length' nullpointer
如果你删除else块,var
if(args.length<0)
的值是什么?编译器不知道这一点。所以它显示你错误。要么在声明期间初始化var
,要么需要在if和else块中初始化。
'if(args.length
执行main
方法时,肯定不会提供args
参数。所以args.length > 0
返回false。
您是否尝试运行代码? – nullpointer
这个答案与OP的问题没有任何关系。 OP询问编译问题,而不是运行时问题。 –
不应该是'public static void main'而不是'static public void main'? – px06
@ px06从字面上看没有区别。你可以按你喜欢的顺序声明修饰符。 –
那么,没有其他的,当'args.length!= 10'时'var'的值是多少?你认为价值来自哪里? – yshavit