为什么在下一个代码中我得到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;
}
}
答案 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;
}
}