当我阅读我的AP java书时,我偶然发现了对我没有意义的这一部分:
... getBalance方法只返回当前余额。 return语句获取变量的值并立即退出该方法。返回值成为方法调用表达式的值。 return语句的语法是:
return expression;
或
return; // Exits the method without sending back a value
为什么你想要一个return语句并“退出方法而不发回一个值”如果你可以让它无效?
***注意:如果这可能过于主观,请注意。我只是无法理解这一点,本书没有解释它。
答案 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;”
,则无法编译源代码