使用if和else语句区分java中的局部变量和类变量
输出:使用if和else语句区分java中的局部变量和类变量,java,Java,输出:编译错误。变量j可能尚未初始化。 为什么会这样?当您在不使用else的情况下使用if else if时,可能不存在true,因此不会执行初始化j的语句,因此,编译器告诉您,当您使用语句System.out.println(j)访问它时,它可能尚未初始化 这可以通过添加else子句来避免: class test { public static void main(String[] args) { int i = 10; int j;
编译错误。变量j可能尚未初始化。
为什么会这样?当您在不使用
else
的情况下使用if else if
时,可能不存在true
,因此不会执行初始化j
的语句,因此,编译器告诉您,当您使用语句System.out.println(j)访问它时,它可能尚未初始化代码>
这可以通过添加else
子句来避免:
class test {
public static void main(String[] args)
{
int i = 10;
int j;
if(i == 10) {
j = 20;
} else if (i == 20) {
j = 30;
}
System.out.println(j);
}
}
顺便说一句,你的标题提到了类变量,但你的问题正文中没有。与局部变量不同,实例和类变量有一个默认值,因此在访问它们之前不必初始化它们。编译器给出了一个错误,因为即使您在if
和else if
块中为变量j
赋值,有一种情况下,j
的值可能没有任何值(初始化),这就是else
条件。这就是编译器抱怨错误的原因。在代码中添加一个else
块,并在其中初始化j
。像下面这样
if (I==10) {
j = 20;
} else if (I==20) {
j = 30;
} else {
j = 0;
}
如果您的代码可读,人们就更有可能阅读它。您的代码块都是有条件的,If和else If。因此,不保证将任何值分配给j。对于方法级变量,需要显式赋值。错误意味着在某些情况下,j不能有值(如果I不是20或10,则为true)。您应该声明intj=0
或放入一个为j
赋值的else
语句。如果不初始化局部变量,则不能使用它。所以当我不是10岁或20岁的时候。它不会被初始化。但是你试着把它打印出来。因为它,你得到了例外
public static void main(String[] args) {
int I = 10;
int j; // j=0; If you do this, then also, the error should go away and no need for else block
if (I == 10) {
j = 20;
} else if (I == 20) {
j = 30;
} else {
j = 0;
}
System.out.println(j);
}