我想知道给定值的局部变量是什么时候
这就是为什么我在以下情况下得到一个未初始化的错误局部变量
int i=10;
int j;
if(i==10)
{
j=100;
}
System.out.println(j);//error
这里的编译器不够聪明,无法确定j的值,即使在上面的行中它已被明确声明为i = 10;
因为我认为在编译期间没有给出值,我得到了这个初始化错误
是原始类型int,在运行时给出10作为其值??
答案 0 :(得分:2)
因为i
是局部变量,int i=10
是在运行时执行的,所以在编译时,编译器不知道i
的值,因此编译器无法确定{{} 1}}必须为真,它只能假设两种情况。如果if (i==10)
不等于10,则i
将使用未初始化的println
,这就是您收到错误的原因。
答案 1 :(得分:1)
在执行if语句之前必须初始化j。必须定义和初始化所有局部变量。
在你的程序中,因为编译器不能识别i的值,所以i == 10没有意义并且给出错误。
答案 2 :(得分:-1)
尝试删除if语句中的花括号。