繁体   English   中英

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

[英]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 ,但是ab是两个互不相关的不同变量

@Lashane给了您答案,但我尝试尽我所能解释。 在方法g()中,您:

  1. 将变量“ 字段 ”设置为2。
  2. 然后调用方法f 请注意,“ 字段 ”是类变量和方法f(int n)的参数。 因此,在方法f的开头,变量“ n”和“字段”都设置为2。

这样,计算(包括在方法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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM