OutPut一个程序的值

时间:2015-06-21 20:37:16

标签: java output

这是一个程序,将输出以下内容: 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.请有人向我解释这个混乱的代码。感谢!!!

5 个答案:

答案 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。

阅读变量的范围将有助于您理解它。