return语句后的方法会发生什么

Gau*_*pta 3 java variables return

public class TestReturn {
     int i = 0;

    public static void main(String[] args) {
        TestReturn t = new TestReturn();

        System.out.println(t.test());
        System.out.println(t.i);
    }

    private int test() {
            return i++;
    }
}
Run Code Online (Sandbox Code Playgroud)

产量

0
1
Run Code Online (Sandbox Code Playgroud)

我的问题是,

  1. 由于test()的返回值为0,因此i,e不递增,所以当我打印i时为什么它会递增.我所知道的是,return方法的出口点,但从这个方法我发现从方法返回后发生了一些事情.

那么回归究竟如何呢?

ζ--*_*ζ-- 7

简单.

当你这样做时return i++ i,最初为0.这i++称为增量,其名称i将在之后增加.

虽然递增之前i++返回一个值,但该方法返回之前完成此语句main.回报不会突然停止这种说法(评估但不递增)

所以你将返回0,递增它,然后在调用时看到1 System.out.println(t.i);.


从技术上讲,值i存储在堆栈中,类字段递增,然后i返回复制的值.

  • @GauravGupta看一下[this](http://stackoverflow.com/a/654741/1424875).正如您所看到的,它会将返回值存储到寄存器中,增加名为`i`的字段,然后从该寄存器返回. (3认同)