실행중인 메서드를 종료하고 호출한 곳으로 되돌아간다.
반환타입이 void가 아닌 경우, 반드시 return문 필요
- 그런데, 이런식으로 조건식이 참일 때 실행되는 코드만 적게 된다면 오류가 발생한다.
그래서 조건식이 거짓일 때 실행되는 코드도 적어줘야 한다.
- 메서드의 반환타입이 void가 아닐 때, return문을 생략 할 수 없다. (=return문 옆에 반환할 값을 적어줘야 한다.)
- 반환값은 변수의 타입과 일치하거나, 자동형변환이 가능한 값(char,byte,short)이어야 한다.
- 반환값의 타입 = 반환타입 = 변수의 타입 이어야 한다.
<스택에 무언가를 집어 넣을 때>
- 무언가를 집어 넣으면, 순서대로 위에 차곡차곡 쌓인다.
<스택에서 무언가를 꺼낼 때>
- 무언가를 꺼내면 제일 위에 있는 것이 먼저 꺼내진다.
<스택의 규칙>
- 스택은 위로 뚫린부분으로만 넣거나 뺄 수 잇고 왼쪽,오른쪽,아래로는 불가능하다.
메서드 수행에 필요햔 메모리가 제공되는 공간
메서드가 호출되면 호출스택에 메모리 할당, 종료되면 해제
- main메서드가 println메서드를 호출하면 그 위로 println메서드가 쌓이면서 실행상태가 되고, main메서드는 println메서드가 끝날 때까지 대기상태가 된다.
- println메서드가 종료되면 스택에서 사라지고 다시 main메서드로 돌아와서 실행상태가 된다.
아래 있는 메서드가 위의 메서드를 호출한 것(=main메서드가 println메서드를 호출)
맨 위의 메서드 하나만 실행 중, 나머지는 대기중
Ex)
class Ex6_5 {
public static void main(String[] args) {
System.out.println("Hello");
}
}
1. 맨 처음 비어있는 상태
2. main메서드가 호출되서 스택에 올라간다.
3. main메서드가 println메서드를 호출해서 그 위로 올라가서 실행상태가 되고, main메서드는 대기상태가 된다.
4. println은 Hello를 출력하면서 자기의 일을 다 하고 사라지고 main메서드로 돌아온다.
5. main메서드도 자신의 할 일을 마쳤기 때문에 사라지고 프로그램은 종료된다.