public class ABC { public static void main(String[] args) { int a = 0, b = 0, c = 0; if(true) a = 2; if(2 == 2) b = 2; if(b == 2) c = 2; System.out.println(a+","+b+","+c); } } 2,2,2这是三个基本类型,可以用==比较值
报错:局部变量c可能未初始化 if(2 == 2) c = 2; if(true) c = 2; 则可以通过,原因自己领会吧
public class ABC { int a; public static void main(String[] args) { int b; ABC inst = new ABC(); System.out.println(inst.a); System.out.println(b); } } D:\test>javac ABC.java ABC.java:9: variable b might not have been initialized System.out.println(b); ^ 1 error其实你看上面这个例子就清楚了,是类的域变量(a)的时间,在类分配空间的时间也给域变量分配也就是说默认初始化。而作为函数的变量,如上面的b是要求初始化的
{
public static void main(String[] args)
{
int a = 0, b = 0, c = 0;
if(true) a = 2;
if(2 == 2) b = 2;
if(b == 2) c = 2;
System.out.println(a+","+b+","+c);
}
}
2,2,2这是三个基本类型,可以用==比较值
if(2 == 2) c = 2;
if(true) c = 2;
则可以通过,原因自己领会吧
作为基本类型变量,java会自动初始化为0的呀?当然其它类型变量必须初始化后才能调用。
谢谢指教!!
而是看他是局部变量还是类的数据成员。
如果是类的成员:初始化时基本类型会有固定值,而对象会为NULL。
好像是吧 呵呵。。
{
int a;
public static void main(String[] args)
{
int b;
ABC inst = new ABC();
System.out.println(inst.a);
System.out.println(b);
}
} D:\test>javac ABC.java
ABC.java:9: variable b might not have been initialized
System.out.println(b);
^
1 error其实你看上面这个例子就清楚了,是类的域变量(a)的时间,在类分配空间的时间也给域变量分配也就是说默认初始化。而作为函数的变量,如上面的b是要求初始化的