作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
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++;
}
}
输出
0
1
我的问题是,
return
是方法的退出点,但是从这个方法我发现从方法返回后发生了一些事情。那么 return 究竟是如何运作的呢?
最佳答案
简单。
当你执行 return i++
时,i
最初为 0。i++
称为 post 增量,并且正如其名称所示,i
将在 之后递增。
尽管 i++
返回一个值 before 递增,该方法在返回 main
之前完成此语句。返回不会突然中途停止此语句(评估但不递增)
因此您将返回 0,递增它,然后在调用 System.out.println(t.i);
时看到 1。
从技术上讲,i
的值存储在堆栈上,类字段递增,然后返回复制出的 i
值。
关于java - return 语句后方法中发生了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19906078/
我之前发布了这个问题,并被告知将其设为 SSCCE,所以这里开始(如果我可以做出任何改进,请随时告诉我):我想知道为什么当我单击“确认”按钮时,旧方 block 消失并且重绘的方 block 没有出现
我是一名优秀的程序员,十分优秀!