如果你没有返回值,为什么有一个return关键字?

时间:2013-09-24 01:04:59

标签: java return void

当我阅读我的AP java书时,我偶然发现了对我没有意义的这一部分:

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

return expression;

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

为什么你想要一个return语句并“退出方法而不发回一个值”如果你可以让它无效?

***注意:如果这可能过于主观,请注意。我只是无法理解这一点,本书没有解释它。

6 个答案:

答案 0 :(得分:3)

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

如果你有一个void返回类型的方法,并且如果你的逻辑中已达到一个指示不再进行进一步处理的点,你可以调用return;强制执行此时返回调用方法,前面进一步执行该方法。

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

这有点像使用break过早地突破loop,除非你在执行结束之前突破了方法。

答案 1 :(得分: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");
}

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

答案 2 :(得分: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");
}

答案 3 :(得分:1)

声明为void的方法可以使用return;退出,这只是提前终止的快捷方式。非void返回类型的方法必须返回正确类型的值,如果非void,则不能让方法返回“无”返回类型。

答案 4 :(得分:1)

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

如果返回类型 void,那么在没有参数的情况下使用return;会给你一个编译错误。

答案 5 :(得分:0)

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

例如

    public A foo(boolean val){

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


    }

如果您只编写“return;”

,则无法编译源代码