public class TestClass{
private int i=giveMeJ();
private int j=10;
private int giveMeJ(){
return j;
}
public static void main(String args[]){
System.out.println((new TestClass()).i);
}
}
为什么输出结果为0?想不明白
private int i=giveMeJ();
private int j=10;
private int giveMeJ(){
return j;
}
public static void main(String args[]){
System.out.println((new TestClass()).i);
}
}
为什么输出结果为0?想不明白
private int i=giveMeJ();
这个时候 private int j=10;
还没执行,j还是0;你把顺序调过来,就对了
private int j=10;
private int i=giveMeJ();
当执行 new TestClass()时,(实际上是要执行默认的构造方法),先是给成员变量分配空间并赋默认值,i=0,j=0.
之后程序会上溯类的父类初始化,这个类的父类是 Object.
从 Object里回来后,先给i j显式赋值,这是调用giveMeJ()方法给i赋值,返回j的值0。再给j赋值10。
之后执行空构造方法,对象产生完。
所以最后输出 new TestClass().i=0.楼主参考一下:
http://wenwen.soso.com/z/q191435823.htm