Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 返回语句应该是代码块中的最后一条指令吗?_Java_Compilation_Return_Unreachable Statement - Fatal编程技术网

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

Java 返回语句应该是代码块中的最后一条指令吗?,java,compilation,return,unreachable-statement,Java,Compilation,Return,Unreachable Statement,我真的需要帮助理解不可访问语句在Java中的实际含义。我有以下内容,当我试图编译时,我得到一个无法访问的语句错误。我已经在Stackoverflow上查看了一些关于无法访问语句的类似问题,但是没有人回答我的问题。我想知道基于return语句是如何工作的,为什么这个版本不能编译 public int refundBalance() { return balance; balance = 0; } 我这样问是因为这里类似的问题并没有给我答案。我猜return应该是代码块中的最后一条

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

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

我这样问是因为这里类似的问题并没有给我答案。我猜return应该是代码块中的最后一条语句,但我对Java的知识还不够丰富,无法确定我的结论。因此,任何澄清都将不胜感激。

是的,
返回
语句应该是代码块中的最后一个语句。如果不是,那么它下面的任何代码都不会被访问,因为
return
语句将控制权转移到调用当前方法的方法(或者首先转移到
finally
块,如果它存在的话)。在
return
语句之后的块中没有编码点,因此它是不允许的。

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

return
语句导致方法退出。因此,同一代码块中
return
语句之后的任何语句都将永远不会执行。这就是为什么会出现此错误。

为了使此错误生效,您必须将另一个变量设置为balance,然后将balance设置为0,然后返回另一个变量

执行return语句时,您希望接下来会发生什么!?控件返回到调用程序,返回后的语句永远无法执行

看起来您确实想要实现此功能,它显然会按如下方式退还当前余额:

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

return
执行它所说的操作,它退出该方法并返回给调用方。所以
return
之后的内容是不可访问的……您知道
return
的作用吗<代码>余额=0将永远不会执行。放在那里绝对没有意义。