我是编程和Java的新手,我对同一类方法中全局变量的行为感到困惑.在我正在学习的课程提供的练习题中,我被问到执行后变量b的值是多少inc(b).
int b;
int inc(int b){
b++;
return b;
}
b = 5;
inc(b);
Run Code Online (Sandbox Code Playgroud)
答案是5而不是6,我理解这是因为Java是按值传递的,并且方法中的所有参数inc都被遗忘了.
另一方面,在java类中,建议为所有实例变量编写set和get方法.那么我的问题是,为什么setter能够更改实例变量并将其值保持在setter之外?换句话说,为什么变量在上面的例子中被"遗忘"了,但在set方法中"记住"了?
public void setName ( String n ) {
name = n;
}
Run Code Online (Sandbox Code Playgroud)