Stack 구조 (stack : 쌓다)
StackTest.java
public class StackTest {
public void methodA() {
System.out.println("A메소드에 들어옴...");
methodB();
System.out.println("A메소드를 나감...");
return;
}
public void methodB() {
System.out.println("B메소드에 들어옴...");
methodC();
System.out.println("B메소드를 나감...");
return;
}
public void methodC() {
System.out.println("C메소드에 들어옴...");
System.out.println("C메소드를 나감...");
return;
}
}
Run.java
public class Run {
public static void main(String[] args) {
System.out.println("main메소드에 들어옴...");
StackTest st = new StackTest();
st.methodA();
System.out.println("main메소드를 나감...");
}
}
들어온 순서 : main -> A -> B -> C
나가는 순서 : main <- A <- B <- C
돌아가가겠다고 하지 않았음에도 돌아가는 이유는 return;이 생략되어있기 때문이다.
나를 호출해줬던 메소드로 돌아가는 게 return의 기능이다. 단순히 종료의 의미를 갖는 게 아니다.
void이므로 값을 가지고 돌아가지 않는다. 반환값이 없다.
return에는 두 가지 종류가 있다. 아무 값도 없는 것과 값이 있는 것이다.
만약 void가 아니라 int가 들어간다면 return에 int값이 들어가야한다. return 다음 int값 아무것이나 반환해야한다.
★★★나를 불러줬던, 호출했던 메소드로 돌아가게 하는 것이 return이다★★★