return 语句应该是代码块中的最后一条指令吗?
Posted
技术标签:
【中文标题】return 语句应该是代码块中的最后一条指令吗?【英文标题】:should a return statement be the last instruction within a code block? 【发布时间】:2014-06-25 04:08:25 【问题描述】:我真的需要帮助来理解一个 unreachable 语句在 Java 中的实际含义。我有以下内容,当我尝试编译时,我得到一个无法访问的语句错误。我在 *** 上查看了一些关于 unreachable statements here 的类似问题,但没有人回答我的问题。我想根据 return 语句的工作原理知道为什么这个版本不能编译。
public int refundBalance()
return balance;
balance = 0;
我问这个是因为这里的类似问题没有给我答案。我猜测 return 应该是代码块中的最后一个语句,但我对 Java 的了解不够,无法确定我的结论。因此,任何澄清将不胜感激。
【问题讨论】:
return
按照它说的做,它退出方法并返回给调用者。所以return
之后的任何东西是无法访问...
你知道return
是做什么的吗? balance = 0
永远不会被执行。把它放在那里绝对没有意义。
【参考方案1】:
当return语句被执行时,你期望接下来会发生什么!?控制权返回给调用程序,return 之后的语句永远无法执行。
看来你真的很想实现这个功能,显然退还当前余额如下:
public int refundBalance()
int result = balance;
balance = 0;
return result;
【讨论】:
【参考方案2】:是的,return
语句应该是代码块中的最后一条语句。如果不是,则永远无法访问它下面的任何代码,因为return
语句将控制权转移到调用当前方法的方法(或首先转移到finally
块,如果它存在)。在 return
语句之后的代码块中没有任何意义,因此它是不允许的。
【讨论】:
【参考方案3】:return
语句不仅规定了当前函数返回的内容,还导致函数终止。所以return
后面的语句在任何情况下都是真的不可达,不应该存在。
【讨论】:
【参考方案4】:为了使它工作,您必须将另一个变量设置为 balance,然后将 balance 设置为 0,然后返回另一个变量。
【讨论】:
【参考方案5】:return
语句导致方法退出。因此,同一代码块中return
语句之后的任何语句都不会被执行。这就是您收到此错误的原因。
【讨论】:
以上是关于return 语句应该是代码块中的最后一条指令吗?的主要内容,如果未能解决你的问题,请参考以下文章