这是一个程序,将输出以下内容: 3 6 3 6 7 该计划是这样的:
public class test3 {
static int x=3;
public static void main(String args[]){
test3 t = new test3();
System.out.println(x);
int x=6;
System.out.println(x);
System.out.println(t.x);
t.xupdate (x);
System.out.println(x);
System.out.println(t.x);
}
public void xupdate(int y){
x=7;
}
}
为什么程序输出的最后一个值为7?我以为它会是6.请有人向我解释这个混乱的代码。感谢!!!
答案 0 :(得分:2)
您正在将类test3
的静态变量设置为7,在以下两个语句中,t.xupdate(x);
之后第一个输出局部变量值为6,第二个输出静态类变量设定为7
System.out.println(x);
System.out.println(t.x);
如果您希望最后一个值为6,则需要将xupdate
更改为设置x=y
答案 1 :(得分:1)
您已在方法中更新static variable x
的值,因此您获得的是7而不是6.请参阅以下代码以便清楚了解
public class test3 {
static int x=3;
public static void main(String args[]){
test3 t = new test3();
System.out.println(x); //prints the value of static variable x which is outside main method
int x=6;
System.out.println(x); //prints the value of variable x initialized inside main method
System.out.println(t.x); //prints the value of static variable outside the main method
t.xupdate (x); //Passed the value 6 to the method, but you changed the static variable inside the method to 7. So the current value of variable x outside the main method is 7
System.out.println(x); //prints the value of static variable inside the main method
System.out.println(t.x); //prints the value of static variable outside the main method
}
public void xupdate(int y){
x=7;
}
}
答案 2 :(得分:1)
试试这个:
public void xupdate(int y){
y=7;
}
您更改了静态变量x。错字?
答案 3 :(得分:1)
public void xupdate(int y){
x=7;
}
应该是
public void xupdate(int y){
x=y;
}
除此之外,y的作用是什么?
答案 4 :(得分:1)
行't.xupdate(x)'调用方法'xupdate(int y)',在其中为x分配7。在此方法中,您使用在main方法中重新声明的第二行中声明的实例变量x为't.x'而不是局部变量x。
阅读变量的范围将有助于您理解它。