我知道 void
方法不会返回任何值,但我仍然可以编写以下代码:
void nothingDohere() {return;}
所以,"void" 如何与此处的 "return" 语句一起使用?我知道 void
方法不会返回任何值,但我仍然可以编写以下代码:
void nothingDohere() {return;}
所以,"void" 如何与此处的 "return" 语句一起使用?不带表达式的 return 语句必须包含在声明为使用关键字 void 不返回任何值(§8.4)的方法或构造函数(§8.8)的主体中。如果 return 语句出现在实例初始化程序或静态初始化程序中(§8.7),则会发生编译时错误。不带表达式的 return 语句尝试将控制转移给包含它的方法或构造函数的调用者。要精确地说,不带表达式的 return 语句总是突然完成,原因是没有返回值的返回。
你的返回语句没有参数,因此它不会返回任何内容,因此返回值为 "void"。
return "xzy";
),你会得到编译错误:无返回值的方法不可返回值
。return
语句也可以用于使程序返回到调用此方法的位置。因此,return
语句将立即终止执行它的方法。
因此,您的示例代码:
void nothingDohere() {
return ;
}
终止方法调用并立即返回到该方法的调用者。
public void doDifferentThings(){
if(){
//something done
return;
}
else{
//something else done
return;
}
}
有些人认为这是不好的设计(与单一出口相矛盾),但它可以使您的代码更清晰。
public calss Test
{
private boolean flag = true;
public Test()
{
... // (1)
... // (2)
voidMethod(); // (3)
... // (7)
... // (8)
}
private void voidMethod()
{
... // (4)
... // (5)
if(flag) return; // (6)
...
...
}
}
当你从一个函数返回时,你将控制权返回给调用返回函数的函数。如果你返回一个值,调用函数将得到该值,否则调用函数只能得到控制权。