Programming/Java

[JAVA] return문, return, 리턴문, 호출스택

Supreme_YS 2021. 10. 9. 18:00

남궁성님의 자바의 정석 강의를 기반으로 작성했습니다.


- Return 문 : 실행중인 메서드를 종료하고 호출한 곳으로 되돌아갑니다.

public class GugudanReturn {
    public static void main(String[] args) {
        Gugudan gugudan = new Gugudan();
        gugudan.printGugudan(3);
    }
}

class Gugudan {
    void printGugudan(int dan){
        if (!(2 <= dan && dan <=9)) {
            return; // dan의 값이 2~9가 아닌경우, 호출한 곳으로 되돌아간다.
        }

        for(int i=1; i <= 9; i++){
            System.out.printf("%d * %d = %d%n", dan, i, dan * i);
        }
        return; // 반환타입이 void이므로 생략가능하며, 컴파일러가 자동 추가
    }
}

- 반환타입이 void가 아니라면 반드시 return문이 필요합니다.

- 메서드에 조건문을 사용할 시 if 와 else 구문에 각각 return문을 작성해야합니다.

    // 두개의 수 중에서 큰 값 출력
    int max(int a, int b) {
        if (a > b){
            return a;
        } else {
            return b;
        }
    }

- 반환형과 return 값의 타입은 반드시 일치해야 합니다. (예. int 형을 반환형으로 설정했으면, return 문 옆의 return 값 또한 int로 설정)

 

- 호출 스택 (Call Stack)

* 스택이란 ? 밑이 막힌 상자로 차곡차곡 쌓이는 모양

스택

* 호출 스택은 메서드 수행에 필요한 메모리가 제공되는 공간으로 메서드가 호출되면 호출 스택에 메모리가 할당되고, 종료시 해제됩니다.

호출 스택

* main 메서드가 first 메서드를 호출하면 first 메서드는 실행되고, main 메서드는 대기상태로 전환됩니다. 이후 마찬가지로 first 메서드는 second 메서드를 호출하게 되고, 순차적으로 third 메서드를 호출하게 됩니다. ( 아래있는 메서드가 위에 있는 메서드를 호출한 것 )

 

* 단, 위의 메서드 하나만 실행중이며 나머지는 대기 상태 입니다. (Single Thread) 추후에 Multi-Thread도 포스팅하겠습니다.