return关键字在Java中的void方法中做了什么?

Rel*_*ual 63 java methods return void

我正在寻找一个路径查找教程,我注意到方法return内部的一个语句void(类PathTest,第126行):

if ((x < 0) || (y < 0) || (x >= map.getWidthInTiles()) || (y >= map.getHeightInTiles())) {
    return;
}
Run Code Online (Sandbox Code Playgroud)

我是Java的新手.谁能告诉我它为什么存在?据我所知,return不允许在void方法中使用.

Coo*_*une 116

它只是在那时退出方法.return执行一次后,其余代码将不会执行.

例如.

public void test(int n) {
    if (n == 1) {
        return; 
    }
    else if (n == 2) {
        doStuff();
        return;
    }
    doOtherStuff();
}
Run Code Online (Sandbox Code Playgroud)

请注意,编译器足够聪明,可以告诉您无法访问的代码:

if (n == 3) {
    return;
    youWillGetAnError(); //compiler error here
}
Run Code Online (Sandbox Code Playgroud)

  • 我理解您的代码是说明性的,但是对于父母的信息; 我和那些相信每个方法应该只有一个return语句的人一起工作过.我不是其中之一,但确实尽可能地减少了回报次数,而没有让代码变得丑陋. (5认同)
  • 我最喜欢破解嵌套循环的方法:) (4认同)
  • 是的,它绝对不是过度使用的东西,但有时它只是让它变得更容易,仍然可以很容易阅读. (2认同)
  • 如果没有返回值,`return`就像循环中的`break`一样工作,只是退出有问题的代码.关于功能的多个出口点已经发生过许多火焰战争,一些语言迫使你这样或那样.我不会在多个退出点上占据一个位置,但我会指出留下一个函数可以清理本地堆栈. (2认同)

Pes*_*sto 25

你可以return在一个void方法中,你只是不能返回任何值(如return 5;),这就是为什么他们称之为void方法.有些人总是使用return语句明确地结束void方法,但它不是强制性的.它可以用来尽早保留一个功能:

void someFunct(int arg)
{
    if (arg == 0)
    {
        //Leave because this is a bad value
        return;
    }
    //Otherwise, do something
}
Run Code Online (Sandbox Code Playgroud)


Mah*_*eTo 19

关键字只是从调用堆栈中弹出一个帧,将控件返回到函数调用之后的行.

  • 哈哈.这是一个很好的答案,但我怀疑java中的初学者会真正掌握你想说的内容. (8认同)

Joh*_*ood 13

Java语言规范说如果方法返回void,则可以返回没有表达式.


Alb*_*ert 5

它退出该函数并且不返回任何内容。

类似的东西return 1;是不正确的,因为它返回整数 1。