Back-End/Java 기초정리

Java ■ 호출 스택과 기본형,참조형 매개변수

SIKIDA 2024. 4. 19. 13:27
728x90

 

◈ 스택 vs 큐

 

• 스택(Stack)

쌓아 올리는 형태를 가진 자료구조이며 후입선출(LIFO, Last In First Out)의 구조

 

ex)

1. 데이터 0을 꺼내기 위해서는 데이터 1, 2를 모두 꺼내야 함

2. 데이터 1을 꺼내기 위해서는 데이터 2를 꺼내야 함

 

 

• 큐(Queue)

줄을 서서 기다리는 형태를 가진 자료구조이며 선입선출(FIFO, First In First Out)의 구조

 

ex)

1. 데이터 0을 바로 꺼낼 수 있음

2. 데이터 1을 꺼내기 위해서는 데이터 0을 먼저 꺼내야 함

 

 

◈ 호출 스택(Call Stack)

메소드 호출과 관련된 정보를 저장하는 메모리 영역으로 후입선출(LIFO) 구조를 가짐

 

• 설명

main 메소드가 호출되어 스택에 올라가있는 상태

• 설명

main 메소드가 println 메소드를 호출함

1. main 메소드는 대기 상태로 변경

2. println 메소드는 실행 상태로 변경

• 설명

println 메소드가 종료되며 main 메소드가 다시 실행 상태로 변경

• 설명

main 메소드가 종료되며 스택이 완전히 비워지며 메모리 영역에서 소멸함

 

 

◈ 기본형 vs 참조형

 

• 기본형 vs 참조형

어떠한 값을 복사하여 매개변수에 넣느냐에 따라 값을 수정할 수 있느냐, 없느냐가 결정됨

이를 이해하기 위해서는 변수가 메모리를 사용하는 흐름과 호출스택에 대해 이해해야함

 

• 기본형 매개변수

메소드 매개변수에 전달을 할 때 값을 전달

 

 

◈ 기본형 매개변수

 

• 설명

main 메소드가 호출되어 스택에 올라가있는 상태

main 메소드는 num 변수의 위치를 참조

* CallStack cs = new CallStack();  CallStack 타입(참조형)의 객체를 생성

 

 

• 설명

changeInt 메소드가 실행되며 값을 전달 (매개변수의 타입이 기본형 int이기 때문)

 

• 설명

전달받은 값을 1000으로 변경

• 설명

println 메소드가 실행되며 num의 값(1000)을 출력

 

• 설명

changeInt 메소드가 종료되며 main 메소드로 돌아옴

 

• 설명

main 메소드에 있는 num의 주소를 참조하여 확인 하는데, num의 값은 10이기 때문에 println에서 값 10을 출력

• 설명

println 메소드 호출이 종료되어 사라지면서 main 메소드가 실행 상태로 변경

 

• 설명

main 메소드가 끝나면서 Call Stack이 비워짐

 

◈ 참조형 매개변수

메소드 매개변수에 전달을 할 때 주소를 전달

 

• 설명

main 메소드가 호출되어 스택에 올라가있는 상태 ;main 메소드는 numArr 변수의 위치를 참조

 

• 설명

changeInt 메소드가 실행되며 값을 전달 (매개변수의 타입이 참조형이기 때문)

 

• 설명

전달받은 값을 1000으로 변경

 

• 설명

println 메소드가 실행되며 num의 값(1000)을 출력

 

• 설명

changeInt 메소드가 종료되며 main 메소드로 돌아옴

• 설명

main 메소드에 있는 num의 주소를 참조하여 확인 하는데,

numArr의 주소에 값이 1000이 들어있으므로 1000을 출력

 

• 설명

println 메소드 호출이 종료되어 사라지면서 main 메소드가 실행 상태로 변경

 

• 설명

main 메소드가 끝나면서 Call Stack이 비워짐

 

 

오늘은 호출 스택과 기본형,참조형 매개변수에 대해 공부를 진행했다 하면할수록 더 공부해야하는 자바 오늘도 

화이팅했고 다음에도 복습하고 더공부하자 그럼 20000!

'Back-End > Java 기초정리' 카테고리의 다른 글

Java ■ 상속  (2) 2024.04.21
Java ■ 생성자, this, this()  (2) 2024.04.20
Java ■ 객체 배열  (0) 2024.04.19
Java ■ 객체 문제풀이  (0) 2024.04.18
Java ■ 객체  (0) 2024.04.17