0
public class Backhand {
    int state = 0;

    Backhand(int s) {
        state = s;
    }

    public static void main(String... hi) {
        Backhand b1 = new Backhand(1);
        Backhand b2 = new Backhand(2);
        System.out.println( b2.go(b2));
    }

    int go(Backhand b) {
        if(this.state ==2) {
            b.state = 5;
            go(this);
        }
        return ++this.state;
    }
}

当它运行时,它输出 7。我认为 ++this.state;应该在方法 go 中只执行一次,输出应该是 6。有人可以解释这里发生了什么吗?

4

2 回答 2

1

更改++this.statethis.state++,它工作正常。

于 2013-04-13T22:03:35.243 回答
1

你得到 7 的原因是因为你go(this)在自己内部调用了go方法,所以最后state会增加两次。

于 2013-04-13T22:09:57.197 回答