{
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都么变过
而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
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能通过,所以一定要努力!!!!
可是我还是不懂一个问题:
结果: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都么变过
而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
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能通过,所以一定要努力!!!!
可是我还是不懂一个问题:
结果: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能通过,所以一定要努力!!!!