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?想不明白

解决方案 »

  1.   

    我也是才学的 不知道我说的对不对 private int i=giveMeJ();这句话 属性 = 方法  不通,方法应该是对象调用 所以 int i = 0  所以结果为0 
      

  2.   

    这个是顺序初始化的
    private int i=giveMeJ();
    这个时候 private int j=10;
    还没执行,j还是0;你把顺序调过来,就对了
    private int j=10;
    private int i=giveMeJ();   
      

  3.   

    我用调试追踪了一下,在main方法中创建实例的同时申明成员变量,这时i,j的值都是0,然后执行i=giveMeJ()这个方法时i还是0,接着给j赋值成为10,所以出现这样的结果,你调试一下就会看到程序执行过程,应该是这样吧
      

  4.   

    java 的对象初始化顺序决定的.
    当执行 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