哪个将在程序中返回

时间:2012-04-23 04:48:14

标签: java

我想知道当程序中有多个返回时,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,因为这是整个程序中的最后一行代码?为什么会这样?

对不起,如果我措辞有点奇怪......

6 个答案:

答案 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}}块在离开方法之前执行。