遮蔽静态变量(全局变量)

时间:2018-07-26 06:32:40

标签: java static shadow

为什么在下一个代码中我得到pro.x = 11?应该是22岁。请有人照亮。

public class Pro {
    static int x=11;

    public static void main(String[] args)  {

    Pro pro=new Pro();
    pro.call(5);
    System.out.println(Pro.x);
    System.out.println(pro.x);  
    }
    public void call(int x){
        x=22;   
    }
}

1 个答案:

答案 0 :(得分:1)

您没有将static / global变量设置为22,而是传递了参数的值。考虑到它是原始值,因此使用按值调用而不是按引用调用。

编辑:实际上,正如注释中所指出的,java没有按引用调用,而是按引用的值调用。

如果您只想更改全局变量,则函数不需要任何参数,您可以通过以下方式进行操作:

public class Pro {
    static int x=11;

    public static void main(String[] args)  {

    Pro pro=new Pro();
    pro.call();
    System.out.println(Pro.x);
    System.out.println(pro.x);  
    }
    public void call(){
        Pro.x=22;   
    }
}