我来这里求答案了

时间:2021-11-08 14:39:45
public class VarTes
 { 
   private int x=1;
   private int y=1;
   private int z=1;

    void changeVar(int a,int b, int c)
      {
        x=a;
        int y=b;
        int z=9;
        System.out.println("In changVar:"+"x="+x+"y="+y+"z="+z); 
        this.z=c;    
       }

    String getXYZ() 
       {  return "x="+x+"y="+y+"z="+z; }

    public static void main(String[] args)
       {
          VarTest v=new VarTest();
          System.out.println("Before changVar:"+v.getXYZ());
          v.changVar(10,10,10);
          System.out.println("After changVar:"+v.getXYZ());
       }
  }
  
结果:Before changVar: x=1 y=1 z=1
      In changVar:     x=10 y=10 z=10
      After changVar:  x=10 y=1 z=10     //不知道为什么会得出这个结果。Y为什么是1呢?

3 个解决方案

#1


changeVar中的y是个局部变量,是在changeVar中定义的,当changeVar执行完就没了,
而getXYZ中的y是this的变量,整个过程this的y都么变过

#2


我得的结果是:
Before changVar:x=1 y=1 z=1
In changVar:x=10 y=10 z=9
After changVar:x=10 y=1 z=10

#3


谢谢楼上几位,in changvar:x=10 y=10 z=9 结果应该是这样,我马虎了,哈哈````

可是我还是不懂一个问题:

结果:Before changVar: x=1 y=1 z=1  //这是调用域变量的结果
      In changVar:     x=10 y=10 z=9 //这是调用 v.changVar(10,10,10);时产生的结果,也就是调用void changeVar(int a,int b, int c)而得出的结果


      After changVar:  x=10 y=1 z=10 //不明白的就是这里 v.getXYZ()之后 x得到a的值 y也应该是b的值啊 z得到的是c的值,那么结果为什么是y=1呢?
还有:    void changeVar(int a,int b, int c)
      {
        x=a;
        int y=b;
        int z=9;
        System.out.println("In changVar:"+"x="+x+"y="+y+"z="+z); 
        this.z=c;    
       }
 
这个是如何调用的?this.z=c为什么会放在system.out...的后面呀?谁能告诉我这个程序的调用顺序呢?我最不明白的就是这个了,由于我没有自己的电脑,所以每次都要上CSDN这里求助答案,求学心切只好这样了,为了这次的SCJP能通过,所以一定要努力!!!!

#1


changeVar中的y是个局部变量,是在changeVar中定义的,当changeVar执行完就没了,
而getXYZ中的y是this的变量,整个过程this的y都么变过

#2


我得的结果是:
Before changVar:x=1 y=1 z=1
In changVar:x=10 y=10 z=9
After changVar:x=10 y=1 z=10

#3


谢谢楼上几位,in changvar:x=10 y=10 z=9 结果应该是这样,我马虎了,哈哈````

可是我还是不懂一个问题:

结果:Before changVar: x=1 y=1 z=1  //这是调用域变量的结果
      In changVar:     x=10 y=10 z=9 //这是调用 v.changVar(10,10,10);时产生的结果,也就是调用void changeVar(int a,int b, int c)而得出的结果


      After changVar:  x=10 y=1 z=10 //不明白的就是这里 v.getXYZ()之后 x得到a的值 y也应该是b的值啊 z得到的是c的值,那么结果为什么是y=1呢?
还有:    void changeVar(int a,int b, int c)
      {
        x=a;
        int y=b;
        int z=9;
        System.out.println("In changVar:"+"x="+x+"y="+y+"z="+z); 
        this.z=c;    
       }
 
这个是如何调用的?this.z=c为什么会放在system.out...的后面呀?谁能告诉我这个程序的调用顺序呢?我最不明白的就是这个了,由于我没有自己的电脑,所以每次都要上CSDN这里求助答案,求学心切只好这样了,为了这次的SCJP能通过,所以一定要努力!!!!