Program Tip

Java의 void 메소드에서 return 키워드는 무엇을합니까?

programtip 2020. 11. 29. 12:10
반응형

Java의 void 메소드에서 return 키워드는 무엇을합니까?


경로 찾기 튜토리얼을 보고 return있는데 void메서드 (class PathTest, line 126) 안에있는 문을 발견했습니다 .

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

저는 Java 초보자입니다. 아무도 왜 거기에 있는지 말해 줄 수 있습니까? 내가 아는 한, returnvoid 메서드 내부는 허용되지 않습니다.


그 지점에서 메소드를 종료합니다. 일단 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
}

returnvoid 메서드에서 가질 수 있으며 (에서와 같이 ) 값을 반환 할 수 없기 return 5;때문에 void 메서드 라고 부릅니다 . 어떤 사람들은 항상 return 문으로 void 메서드를 명시 적으로 종료하지만 필수는 아닙니다. 할 수 있지만, 초기 기능을 떠날 수 :

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

키워드는 단순히 호출 스택에서 프레임을 팝하여 컨트롤을 함수 호출 다음 줄로 반환합니다.


Java 언어 사양에 따르면 메서드가 void를 반환하면 표현식없이 반환 할 수 있습니다.


반환 할 것이없고 제어가 호출 메서드로 다시 전달되기 때문에 아무 것도 반환하지 않는다는 점을 제외하면 지정된 매개 변수가있는 함수의 반환과 동일하게 작동합니다.


함수를 종료하고 아무것도 반환하지 않습니다.

return 1;정수 1을 반환하기 때문에 이와 같은 것은 올바르지 않습니다.


이 예를 참조하여 조건부로 목록에 추가하려고합니다. "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;
    }
}

참고 URL : https://stackoverflow.com/questions/744676/what-does-the-return-keyword-do-in-a-void-method-in-java

반응형