![](/img/trans.png)
[英]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.