public class A{
private int i=giveMeJ();
private int j =10;
private int giveMeJ(){
return j;
}
public static void main(String args[]){
//1.
System.out.println((new A()).i);
        }
}告诉我输出什么,最重要的是为什么?

解决方案 »

  1.   

    public class A{
    private int i=giveMeJ();//引用成员方法
    private int j =10;
    private int giveMeJ(){
    return j;              //返回j 的值
    }
    public static void main(String args[]){
    //1.
    System.out.println((new A()).i); //输出变量i
    }
    }
      

  2.   

    你这个问题的答案是 0
    这个段代码运行这程是这样子的:1,当new对像A时,先对 i j 进行初始化。  i 因为调用来函数,所以默认初始为 0 。  j 为 10
    2, 你的对像调用的是 i  ,他在执行时不会通过 private int i=giveMeJ(); 所以得到的结果为 0;package com.ydw.struts;public class A { private int i = giveMeJ();
    private int j = 100;

    private int giveMeJ()
    {
    return j;
    }
    public static void main(String[] args) {
    System.out.println((new A()).i);
    System.out.println((new A()).j);
    System.out.println((new A()).giveMeJ());
    }
    }结果是: 0
            100
            100
    JAVA中,一般不直接调用变量(属性),所以通常用 getter and setter方法去得到它们。。
      

  3.   

    0.
    你自己安程序的流程走一边就知道了。
    先执行 i=giveMeJ() ;那程序就到giveMeJ()方法中去了。该方法是return j。可这时候 int j =10,还没执行到呢。所及j作为int类型的变量默认初始化为0,所以就返回0了。
      

  4.   

    己安程序的流程走一边就知道了。
    先执行 i=giveMeJ() ;那程序就到giveMeJ()方法中去了。该方法是return j。可这时候 int j =10,还没执行到呢。所及j作为int类型的变量默认初始化为0,所以就返回0了。
      

  5.   

    楼主是想知道为什么等于0 而不等于10吧你把 i 和j 定义 位置换下就知道了
    public class A{
    private int j =10;
    private int i=giveMeJ();//引用成员方法
    private int giveMeJ(){
    return j;              //返回j 的值
    }
    public static void main(String args[]){
    //1.
    System.out.println((new A()).i); //输出变量i
    }
    }
      

  6.   

    结果:0 
    变量的初始化是按顺序执行的 在初始化变量i的时候 j还没有被初始化呢 所以值为默认0
    如果把private int j =10;这句放到最前面 结果就是10了
      

  7.   

    楼主的输出就是0;但是如果你这样的话输出就是10
    public class A{
    private int j =10;
    private int i=giveMeJ();//引用成员方法
    private int giveMeJ(){
    return j;              //返回j 的值
    }
    public static void main(String args[]){
    //1.
    System.out.println((new A()).i); //输出变量i
    }
    }
    个人认为变量赋值的先后问题,i在j前面的话,在调用静态的方法时j还未赋值,这时应该是默认的0.
      

  8.   

    结果:0 
    变量的初始化是按顺序执行的 在初始化变量i的时候 j还没有被初始化呢 所以值为默认0
    如果把private int j =10;这句放到最前面 结果就是10了正解。