Java 有人能解释一下为什么答案是6吗?
调用Java 有人能解释一下为什么答案是6吗?,java,Java,调用g()后,字段的最终值是多少?我知道答案是6,但有人能解释一下原因吗?您可以将代码扩展为以下内容: private int field; public void f(int n) { n = n + field; field = field + n; n = n + 2; } public void g() { field = 2; f(field); } 最终值: field = 2; // fi
g()
后,字段的最终值是多少?我知道答案是6,但有人能解释一下原因吗?您可以将代码扩展为以下内容:
private int field;
public void f(int n) {
n = n + field;
field = field + n;
n = n + 2;
}
public void g() {
field = 2;
f(field);
}
最终值:
field = 2; // field == 2
int n = field; // n == 2; field == 2
n = n + field; // n = 2+2 == 4; field == 2
field = field + n; // n == 4; field = 2+4 == 6
n = n + 2; // n = 4+2 == 6; field == 6
注:
a=b
意味着只有b
的值存储/复制到a
,但是a
和b
是两个不同的变量,它们彼此不相关@Lashane已经给了你一个答案,但我试图尽可能简单地解释它。
在方法g()中,您可以:
field == 6
n == 6
什么是不清楚的?当你“在你的大脑计算机上运行它”时会发生什么?逐行替换值。请注意,重新分配到
n
(不分配这样的结果)对字段
没有影响。我只是不知道为什么最终值等于6。如果可以的话,你能解释一下为什么吗?谢谢你,因为你写了代码,让它显示你的“大脑电脑”在每一步的工作。
n = n + field; // n = 2 + 2 == 4
field = field + n; // field = 2 + 4
n = n + 2; // n = 4 + 2 == 6