[英]The second while loop is running endlessly can someone please explain why?
[英]Can someone please explain why the answer is 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);
}
调用g()
之后field的最终值是多少? 我知道答案是6,但有人可以解释原因吗?
您可以将代码扩展为如下所示:
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
最终值:
field == 6
n == 6
注意: a = b
表示仅将b
值存储/复制到a
,但是a
和b
是两个互不相关的不同变量
@Lashane给了您答案,但我尝试尽我所能解释。 在方法g()中,您:
这样,计算(包括在方法f中 )就很清楚了:
n = n + field; // n = 2 + 2 == 4
field = field + n; // field = 2 + 4
n = n + 2; // n = 4 + 2 == 6
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.