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

时间:2015-04-24 19:42:55

标签: 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); 
}

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

2 个答案:

答案 0 :(得分: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

最终价值观:

field == 6
n == 6

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

答案 1 :(得分:1)

@Lashane给了你一个答案,但我试着尽可能地解释它。 在方法 g()中:

  1. 设置变量' 字段'为2.
  2. 然后调用方法 f 。请注意' 字段'是类变量和方法 f(int n)的参数。所以在方法 f 开始时,两个变量都是' n'和' field'设为2。
  3. 然后计算(包含在方法 f 中)是明确的:

     n = n + field; // n = 2 + 2 == 4
     field = field + n; // field = 2 + 4
     n = n + 2; // n = 4 + 2 == 6