- 에 대한 추가입니다.
public class Start5 {
static int share;
public static void main(String[] args) {
share = 55;
int k = fun(5, 7);
System.out.println(share);
}
private static int fun(int m, int p) {
share = m + p;
return m - p;
}
}
- main 메서드의 시작
- 프로그램 시작시
main
메서드가 호출됨 main
메서드의 스택 프레임이 생성되며, 스택영역의 맨 위에 위치합니다
- 프로그램 시작시
- share 변수의 값 할당
main
메서드 내에서share
변수 (정적변수) 에 55 라는 값을 할당하게 됩니다.fun
메서드의 호출새로운 스택 프레임이 생성되어main
메서드의 스택 프레임 위에 쌓입니다
main
메서드에서fun
메서드를 호출하며fun
메서드 내에서의 동작fun
메서드 내에서share = m + p;
문장이 실행되면share
변수의 값이 5 + 7 인 12로 변경됨
fun
메서드 반환값return m-p;
문장이 실행 ⇒fun
메서드의 반환 값인 -2 가k
변수에 저장fun
메서드 스택 프레임의 반환- 스택 프레임이 반환되며
main
메서드의 스택 프레임에 있던k
변수에 반환값이 대입됨.
- 출력.
- share 변수 12 출력
Stack 프레임의 특성
- 메서드의 호출과 반환에 따라 동적으로 생성되고 제거되는 구조
- 메서드 호출의 중첩시마다, 스택 프레임이 쌓이며, 메서드가 반환될 때 해당 스택 프레임은 스택에서 제거됨.
'자바 > 스프링입문객체지향' 카테고리의 다른 글
객체지향은 인간 지향이다. (0) | 2023.08.19 |
---|---|
__**Java 8 이전과 이후의 메모리 영역 변화**__ (0) | 2023.08.19 |
변수에 저장하는 값 자체는 어디에서 오게 되는걸까? (0) | 2023.08.19 |
필드 vs 속성 | 함수 vs 메서드 (0) | 2023.08.18 |
멀티 스레드 / 멀티 프로세스의 이해 (0) | 2023.08.18 |