我知道void
方法没有返回任何值,但我仍然可以编写像
void nothingDohere() {return;}
那么,“无效”如何在这里使用“return”语句?
答案 0 :(得分:13)
没有值的return语句只能 在void
方法(或构造函数)中使用,并简单地执行“退出现在的方法”部分返回。认为带有回报的声明有两个目的:
finally
块) void
方法中的return语句只能实现其中的第一个;第二种方法在void
方法中毫无意义。
来自Java语言规范的section 14.17:
没有表达式的return语句必须包含在声明的方法体中,使用关键字void,不返回任何值(第8.4节),或者在构造函数体(§8.8)中。如果返回语句出现在实例初始化程序或静态初始化程序(第7.7节)中,则会发生编译时错误。没有Expression的return语句尝试将控制权转移给包含它的方法或构造函数的调用者。 确切地说,没有表达式的return语句总是突然完成,原因是没有值的返回。
答案 1 :(得分:5)
你的return语句没有参数,所以它没有返回任何内容,因此返回的值是'void'。
答案 2 :(得分:1)
在执行return语句的Method中的任何一点,它都会从方法中退出。所以返回这里只是结束你方法的执行。
如果您尝试从void方法中尝试某些(某些值),例如return"xzy";
您将收到complition错误Void methods cannot return a value
答案 3 :(得分:0)
return
语句也可用于使执行返回此方法的调用者。因此,return语句将立即终止执行它的方法。
因此,您的示例代码:
void nothingDohere() {
return ;
}
终止方法调用并立即返回给方法的调用者。
答案 4 :(得分:0)
在你提到的情况下,返回确实在语义上是多余的(虽然在语法上需要它 - 如果没有这个返回,Javac将无法编译)。返回终止方法。
然而,在某些情况下,希望在方法中具有多个出口点,例如,像这样:
public void doDifferentThings(){
if(){
//something done
return;
}
else{
//something else done
return;
}
}
有些人认为这种糟糕的设计(与单点退出相矛盾),但它可以使你的代码更清晰。
答案 5 :(得分:0)
简单地说,它从void方法内部返回到程序调用该方法的位置:
public calss Test
{
private boolean flag = true;
public Test()
{
... // (1)
... // (2)
voidMethod(); // (3)
... // (7)
... // (8)
}
private void voidMethod()
{
... // (4)
... // (5)
if(flag) return; // (6)
...
...
}
}
答案 6 :(得分:0)
从函数返回时,将控件返回给调用返回函数的函数。如果返回一个值,则调用函数将获得该值,否则调用函数将仅获取控件。