Java 有人能解释一下为什么答案是6吗?

Java 有人能解释一下为什么答案是6吗?,java,Java,调用g()后,字段的最终值是多少?我知道答案是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); } 最终值: field = 2; // fi

调用
g()
后,字段的最终值是多少?我知道答案是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); 
}
最终值:

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

注:
a=b
意味着只有
b
的值存储/复制到
a
,但是
a
b
是两个不同的变量,它们彼此不相关

@Lashane已经给了你一个答案,但我试图尽可能简单地解释它。 在方法g()中,您可以:

  • 将变量“字段”设置为2
  • 然后调用方法f。请注意,“字段”是类变量和方法f(int n)的参数。所以在方法f的开头,变量“n”和“field”都被设置为2
  • 那么计算(包括在方法f中)就很清楚了:

    field == 6
    n == 6
    

    什么是不清楚的?当你“在你的大脑计算机上运行它”时会发生什么?逐行替换值。请注意,重新分配到
    n
    (不分配这样的结果)对
    字段
    没有影响。我只是不知道为什么最终值等于6。如果可以的话,你能解释一下为什么吗?谢谢你,因为你写了代码,让它显示你的“大脑电脑”在每一步的工作。
     n = n + field; // n = 2 + 2 == 4
     field = field + n; // field = 2 + 4
     n = n + 2; // n = 4 + 2 == 6