在空隙函数中使用回报的低级分析

时间:2017-03-20 03:09:57

标签: java

在Java中,当你在return;函数中使用void语句时,在低级别上发生了什么,而不是让函数到达它的结尾?有什么不同吗?

例如,可能存在一些逻辑差异(和编译时间),例如

public void foo() {
    if (true) {
        return;
    }
    doSomething();
}

我们永远不会执行doSomething()。但是,那个我在说什么。我在谈论:

public void foo1() {
    doSomething();
    return;
}

VS

public void foo2() {
    doSomething();
}

在机器级别处理这个问题有什么不同吗?

1 个答案:

答案 0 :(得分:2)

参考此Oracle doc.
声明为void的任何方法都不返回值。
将“return”语句添加到此类方法是可选的。
'return'语句的唯一目的就是从控制流程块中分出并退出方法。

public void foo1() {
    return;
    doSomething(); //compiler error.
}


因此,

public void foo1() {
    doSomething();
    return;
}

public void foo2() {
    doSomething();
}

在技术上是一样的。