class Variable
  {
    int x=0,y=0,z=0;
    void init(int x,int y)
      {
        this.x=x;
        this.y=y;
        int z=5;
        System.out.println("x="+x+"y="+y+"z="+z);
      }
  }public class VariableTest
  {
    public static void main(String[] args)
      {        Variable v=new Variable();
        System.out.println("x="+v.x+"y="+v.y+"z="+v.z);
        v.init(20,30);
        System.out.println("x="+v.x+"y="+v.y+"z="+v.z);      }
  }结果:x=0  y=0 z=0   //这是调用域变量的结果
      x=20 y=30 z=5  //这是 v.init(20,30)的结果
      x=20 y=30 z=0  //可是这个的结果是怎么调用的?最后一句Syste.out...的v.x和v.y怎么会是20和30呢?难道它调用的是init()方法的吗?即使是的话,那Z应该是5啊?

解决方案 »

  1.   

    我想你要看清楚一点哦
    int z=5;
            System.out.println("x="+x+"y="+y+"z="+z);这里的z是个局部变量,不是实例变量,实例变量还是0
      

  2.   

    v.init(20,30);this.x=x;
    this.y=y;
    这里不是修改了实例变量的值了吗?
    而且
     System.out.println("x="+x+"y="+y+"z="+z);
    也是打印局部变量的值this.x=x;
    this.y=y;
      

  3.   

    void init(int x,int y)
          {
            this.x=x;
            this.y=y;
            int z=5;
            System.out.println("x="+x+"y="+y+"z="+z);
          }
      }
    这里的Z是局部变量。用完就没了
    和这个类中声明的Z全局变量不一样。用完还在