코드 그라데이션
함수의 실행 흐름 - 선입후출 구조 본문
이 코드는 다음과 같은 실행 순서와 출력 값을 가지게 됩니다:
- Main() 함수가 호출되어 a() 함수가 실행됩니다.
- a() 함수 내부에서 b() 함수가 호출되어 실행됩니다.
- b() 함수 내부에서 c() 함수가 호출되어 실행됩니다.
- c() 함수 내부에서 d() 함수가 호출되어 실행됩니다.
- d() 함수 내부에서 e() 함수가 호출되어 실행됩니다.
- e() 함수에서는 문자열 "E"가 출력됩니다.
- d() 함수로 돌아와서 "D"가 출력됩니다.
- c() 함수로 돌아와서 "C"가 출력됩니다.
- b() 함수로 돌아와서 k() 함수가 호출되어 실행됩니다.
- k() 함수 내부에서는 문자열 "A"가 출력됩니다.
- b() 함수에서는 문자열 "B"가 출력됩니다.
- a() 함수로 돌아와서 k() 함수가 호출되어 실행됩니다.
- k() 함수 내부에서는 문자열 "A"가 출력됩니다.
- a() 함수에서는 문자열 "A"가 출력됩니다.
즉, 전체 출력 결과는 "E D C A B A A"가 됩니다.
이 코드는 호출 스택(Call Stack)이라는 메커니즘에 따라 실행됩니다.
함수가 호출되면 해당 함수의 코드 블록이 실행되기 전에 호출 스택에 함수가 추가됩니다.
함수가 실행을 마치면 호출 스택에서 제거됩니다.
이 코드에서는 함수 a()가 가장 먼저 호출되었기 때문에 호출 스택에는 a(), b(), c(), d(), e(), k() 순으로 추가되었고,
역순으로 제거되면서 실행 결과가 출력됩니다.
728x90
'Java > Mega' 카테고리의 다른 글
Day09 선택정렬 예제 경우의 수 따지기 (0) | 2023.04.01 |
---|---|
Day13. Call by Value와 Call by Reference (0) | 2023.03.31 |
계산기 과제 (0) | 2023.03.29 |
[보충] 메소드의 입력값과 리턴값 (0) | 2023.03.29 |
[보충] 메소드 기초 - 메소드 개념, 매개변수와 인 (0) | 2023.03.29 |
Comments