我想知道当程序中有多个返回时,java程序中会返回什么。
private int numberReturner()
{
if (a) return a;
else if (b) return b;
for (int i = 1; i < board.size()-1; i++)
{
if (c) return c;
}
return d;
}
所以我们说a是真的,(它应该返回一个),但它不会返回d,因为这是整个程序中的最后一行代码?为什么会这样?
对不起,如果我措辞有点奇怪......
答案 0 :(得分:4)
一旦遇到任何'return'语句,该方法将退出执行并返回该值。
只有在到达最后一行之前没有遇到其他return语句时,该方法才会返回d。
答案 1 :(得分:2)
通常,遇到的第一个“返回”将是返回的。但是如果在finally块中遇到“return”语句,则返回finally块中的“return”。 e.g。
private int m1(){
try{
return 1;
}finally{
return 2; //this will be returned instead
}
}
答案 2 :(得分:1)
如果您已经&#34;已退回&#34;你永远不会打到后来的回报。
答案 3 :(得分:1)
该方法返回一个因为return语句退出当前方法,并且控制流返回到调用方法的位置。请阅读Java教程中有关不同分支关键字的更多信息。 http://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html
答案 4 :(得分:1)
执行return
语句后,方法结束,如果不是void
,则返回返回值。
我知道这个规则只有一个例外,你可以使用finally
语句。
举个例子:
public static void main(String[] args) {
System.out.println(test());
}
private static int test() {
try {
return 1;
} finally {
return 2;
}
}
在这种情况下test()
返回2,因为在这种情况下finally
语句总是在退出方法之前执行。
答案 5 :(得分:0)
当前执行线程将在第一次遇到return
语句时离开方法(此规则的明显例外是try...finally
块,其中,遇到return
时遇到finally{...}
,{{1}}块在离开方法之前执行。