return语句应该是代码块中的最后一条指令吗?

时间:2014-05-07 23:47:59

标签: java compilation return unreachable-statement

我真的需要帮助理解无法访问的语句在Java中实际意味着什么。我有以下内容,当我尝试编译时,我得到一个无法访问的语句错误。我在Stackoverflow上查看了一些关于无法访问语句的类似问题,但没有人回答我的问题。我想知道返回语句如何工作,为什么这个版本不能编译。

public int refundBalance()
{
    return balance;
    balance = 0;
}

我问这个是因为这里的类似问题没有给我答案。我猜测返回应该是代码块中的最后一个语句,但我对Java的知识不足以确定我的结论。所以,任何澄清都将非常感激。

5 个答案:

答案 0 :(得分:1)

是的,return语句应该是代码块中的最后一个语句。如果不是,那么它下面的任何代码都无法到达,因为return语句将控制转移到调用当前方法(或finally块的方法首先,如果它存在)。在return语句后,无需在块中进行编码,因此不允许使用。

答案 1 :(得分:1)

当执行return语句时,你期望接下来发生什么!? Control返回到调用程序,返回后的语句永远不会被执行。

看起来你真的想要实现这个功能,它显然会退还当前的余额如下:

public int refundBalance() {
    int result = balance;
    balance = 0;
    return result;
}

答案 2 :(得分:0)

return语句不仅指示当前函数返回的内容,还会导致函数终止。因此,return之后的陈述在任何情况下都是无法实现的,并且不应该存在。

答案 3 :(得分:0)

return语句导致该方法退出。因此,在同一代码块中的return语句之后的任何语句都将永远不会被执行。这就是你得到这个错误的原因。

答案 4 :(得分:0)

为了使其工作,你必须设置另一个变量来平衡,然后将balance设置为0,然后返回另一个变量。