在Java中,return关键字在void方法中有什么作用?

m0rkklqb  于 2023-05-21  发布在  Java
关注(0)|答案(8)|浏览(204)

我正在查看a path finding tutorial,我注意到void方法中的return语句(类PathTest,第126行):

if ((x < 0) || (y < 0) || (x >= map.getWidthInTiles()) || (y >= map.getHeightInTiles())) {
    return;
}

我是Java的新手。有人能告诉我为什么它在那里吗?据我所知,return在void方法中是不允许的。

ffx8fchx

ffx8fchx1#

它只是在该点退出方法。一旦return被执行,其余的代码将不会被执行。
例如。

public void test(int n) {
    if (n == 1) {
        return; 
    }
    else if (n == 2) {
        doStuff();
        return;
    }
    doOtherStuff();
}

请注意,编译器足够智能,可以告诉您某些代码无法访问:

if (n == 3) {
    return;
    youWillGetAnError(); //compiler error here
}
xytpbqjk

xytpbqjk2#

你可以在一个void方法中使用return,但你不能 * 返回任何值 *(就像在return 5;中一样),这就是为什么他们称之为 void 方法。有些人总是用return语句显式地结束void方法,但这不是强制性的。它 * 可以 * 用于提前离开函数,但是:

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

dzhpxtsq3#

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

7rtdyuoh

7rtdyuoh4#

Java语言规范规定,如果方法返回void,则可以使用不带表达式的return。

hk8txs48

hk8txs485#

它退出函数并不返回任何内容。
类似return 1;的值是不正确的,因为它返回整数1。

dxxyhpgq

dxxyhpgq6#

它的功能与具有指定参数的函数的返回相同,除了它不返回任何东西,因为没有任何东西要返回,并且控制被传递回调用方法。

yrefmtwq

yrefmtwq7#

看这个例子,你想有条件地添加到列表中。如果没有“return”,所有的if都将被执行并添加到ArrayList中!

Arraylist<String> list =  new ArrayList<>();

    public void addingToTheList() {

    if(isSunday()) {
        list.add("Pray today")
        return;
    }

    if(isMonday()) {
        list.add("Work today"
        return;
    }

    if(isTuesday()) {
        list.add("Tr today")
        return;
    }
}
sqxo8psd

sqxo8psd8#

public void run(){
// body }
} ``
} return语句不应该出现在void方法中,因为不能指定返回值。

相关问题