有人可以解释为什么答案是6?

0 java

private int field;

public void f(int n) {
    n = n + field;
    field = field + n;
    n = n + 2; 
}

public void g() {
    field = 2;
    f(field); 
}
Run Code Online (Sandbox Code Playgroud)

调用后字段的最终值是g()多少?我知道答案是6但有人可以解释一下原因吗?

Iły*_*sov 7

您可以将代码扩展为以下内容:

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
Run Code Online (Sandbox Code Playgroud)

最终价值:

field == 6
n == 6
Run Code Online (Sandbox Code Playgroud)

注意:a = b表示只b存储/复制到的值a,但是a并且b是两个彼此不相关的不同变量