import java.util.Arrays;
public class Sample6_11
{
public static void main(String[] args)
{
int i = 0, x = 90, y = 50;
if (x > y)
{
i = 10;
}
System.out.println(i);
}
}
import java.util.Arrays;
public class Sample6_11
{
public static void main(String[] args)
{
int i, x = 90, y = 50;
if (x > y)
{
i = 10;
}
System.out.println(i);
}
}
为什么局部变量i如果没有初始化,那么System.out.println(i);就因为i没有初始化而不能通过编译?
但是如果把i初始化为任意一个值,比如i = 0;那么System.out.println(i);打印出的不是0而是10?
------解决思路----------------------
java规定所有使用的变量都要初始化,否则会出现编译期错误。
i的作用域是在main方法内包含了if代码块,在if里面操作也会改变i的值。
------解决思路----------------------
java局部变量不会自动初始化,你必须告诉编译器这个变量的初始值。
你在 if 语句里面给 i 赋了值,但编译器是不知道你的程序是否会跑到 if 语句里面的(只有运行时才知道),所以到 System.out.println(i); 时 i 没有赋过值,编译不通过;
除非你在 else 里面再给 i 赋值,那边编译器会认为你在 if...else 里面始终会给 i 赋值,所以到 System.out.println(i); 时 i 肯定已经赋过值,编译通过。
------解决思路----------------------
编译器不知道i会不会被赋值.