3

当我阅读我的 AP java 书时,我偶然发现了这对我来说毫无意义的部分:

... getBalance 方法只是返回当前余额。return 语句获取变量的值并立即退出方法。返回值成为方法调用表达式的值。return 语句的语法是:

return expression;

或者

return; // Exits the method without sending back a value

如果您可以使其无效,您为什么要使用 return 语句并“退出方法而不发回值”?

***注意:对不起,如果这可能过于主观。我只是无法理解这一点,书上也没有解释。

4

6 回答 6

3

return关键字不需要放在最后。例如:

public static void print42(int[] numbers) {
    for(int i=0; i<numbers.length; i++) {
        if (numbers[i] == 42) {
            System.out.println("has 42");
            return;
        }
    }
    System.out.println("no 42");
}

它不能只使用 a break,因为那会打印两个字符串。

于 2013-09-24T01:10:28.243 回答
3

这有点主观。我是老派,我相信所有方法/功能都有一个入口和出口点,但是......

如果您有一个具有void返回类型的方法,并且如果您的逻辑已经到达一个点,该点将指示不应进行进一步处理,您可以调用return;以强制执行此时返回到调用方法,前述任何进一步方法的执行。

这与在具有预期返回类型(无论是什么)return x;的方法体中间使用类似的东西是一样的x

这有点像使用breakto break out of aloop过早的,除了你是在执行结束之前退出方法。

于 2013-09-24T01:08:53.847 回答
2

在某些情况下,一旦您验证了void函数内部的某些内容,立即退出它是有意义的。例如:

public static void checkIfStringInList(List<String> searchList, String findString) {
    for( String thisSearchString : searchList ) {
        if( findString.equals(thisSearchString) )
            return;
    }

    throw new Exception("String " + findString + " not found in list");
}
于 2013-09-24T01:10:30.190 回答
1

声明为voidcan exit with a return;this 的方法只是提前终止的捷径。具有非void返回类型的方法必须返回正确类型的值,如果方法具有非返回类型,则不能让方法返回“无” void

于 2013-09-24T01:09:43.533 回答
1

如果您的方法具有void返回类型,则该return语句是可选的。例如,如果您想在某些情况下停止执行,您可能仍想使用它。

如果返回类型不是void,那么return;不带参数使用会给你一个编译错误。

于 2013-09-24T01:09:50.050 回答
0

在 java 中,如果方法的签名中有返回类型,则必须在退出方法之前返回该类型的对象或 null。

例如

    public A foo(boolean val){

    A obj=null;
    if (val){
    obj=new A();
    obj.setSomeAttribute();
    }
   return obj;


    }

如果只编码“return;”,则无法编译源代码

于 2013-09-24T01:11:47.577 回答