在void方法结束时返回意味着什么?

时间:2011-09-14 06:09:52

标签: java

我知道void方法没有返回任何值,但我仍然可以编写像

这样的代码
void nothingDohere() {return;}

那么,“无效”如何在这里使用“return”语句?

7 个答案:

答案 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)

从函数返回时,将控件返回给调用返回函数的函数。如果返回一个值,则调用函数将获得该值,否则调用函数将仅获取控件。