자바 스택관련 질문

자바 스택관련 질문

작성일 2022.05.17댓글 2건
    게시물 수정 , 삭제는 로그인 필요


아래의 코드처럼

a,b순서로 변수 선언하면

스택에 b가 a보다 위에있는 상태가되잖아요.

스택은 FILO으로 알고있는데

println(a)실행시 어떻게 바로 a를 값을 가져올 수있는지 궁금합니다ㅠ





profile_image 익명 작성일 -

안녕하세요.

자바에서 변수를 선언하게 되면 스택 메모리에 쌓이게 되죠?

이때 스택 메모리는 FILO가 아니라 가장 나중에 들어온 데이터가 먼저 나가게 되는 Last In Fisrt Out 구조를 가집니다.

한 번 볼까요?

int a = 1; int b = 2;

위처럼 변수를 생성하게 되면 stack에는 어떻게 쌓일까요?

2

1

이렇게 되겠죠?

아래서부터 a와 b의 고유 공간에 1과 2가 할당이 됩니다.

void main() { <--- int a = 1; int b = 2; a = 2; b = 4; }

자세히 보자면,

중괄호가 시작되는 지점에서 stack 메모리가 준비됩니다.

이 때 stack 메모리에는 아무 것도 존재하지 않습니다.

void main() { int a = 1; int b = 2; <--- a = 2; b = 4; }

2

1

변수를 선언하게 되면 이와 같이 고유 공간에 1과 2를 할당 합니다.

void main() { int a = 1; int b = 2; a = 2; b = 4; <--- }

4

2

각 주소값을 알고 있으니, 값을 변경할 수 있게 되겠죠?

void main() { int a = 1; int b = 2; a = 2; b = 4; } <---

2

그리고 중괄호가 닫히면서 stack의 모든 값이 pop 됩니다.

이때 b부터 하나씩 빠지겠죠? 결과적으로 stack은 다시 null이 되게 됩니다.

자, 그럼 이해가 되셨나요?

print 메소드를 사용하든, 값을 변경하든 상관이 없습니다.

stack의 주요점은 저장하고 제거하는 방식이 LIFO인 것일 뿐, 참조하는 데는 어떤 문제도 없습니다.

print 메소드는 a주소 값에 따라 value 값을 조회하여 콘솔 창에 뿌려주는 것뿐,

stack 메모리를 변경하는 것이 아니기 때문입니다.

profile_image 익명 작성일 -

바로... 못 가져온다는 생각은 그럼 어떻게 나오는건지 궁금하네요 ㅎ.

a 위에 b가 막고 있으니까 못꺼낸다?

생각을 달리 해 보죠.

b를 꺼내고, a를 꺼내서 println 한 후에 b를 다시 넣으면요?

혹은 b를 꺼내고, a를 꺼낸 뒤에 b만 넣고 a는 println에 사용하면요?

int b = 2와 println 사이에 아무 것도 동작하지 않는다는 '전제'를 한 발상인데.

프로그램은 그렇게 단순하지 않아서 그 사이에 수십만번 동작이 오갑니다.

자바 스택관련 질문

... 자바에서 변수를 선언하게 되면 스택 메모리에 쌓이게 되죠? 이때 스택 메모리는 FILO가 아니라 가장 나중에 들어온 데이터가 먼저 나가게 되는 Last In Fisrt...

스택 개발자 취업교육 이후 관련 질문

... 궁금하여 질문 남겨봐요 비공개 조회수 2 작성일1분 전 안녕하세요 이번에 기회가 되어 자바스택 취업교육을 받게 되었습니다. 그러나 현재 대학교 3학년으로 교육...

자바 스택질문

... a객체 자체는 스택영역에 들어간다 맞나요? 1-2. a객체는 힙영역에 9개의 int형... 자바를 공부할때 난애했던 부분이 메모리 관련 부분인것 같습니다.....

취업에 대한 질문입니다. (기술 스택 관련)

... JPA의 장점은 익히 들어 알고 있지만 국비 출신 비전공자가 자바 스프링으로 서비스... 기술스택으로도 프로젝트를 만들어야 할까요? 학원에서 진행하는 커리큘럼대로...

자바 Jbutton 관련 질문입니다!

... 자바 코딩하고 있는데 궁금한점 있어서 여쭤봅니다. 지금 계산기 만드는 중인데요!... 예를들어 액션 리스너에서 + 버튼을 눌렀을때 스택에 +가 들어가게 했다고 하면 키...

자바 이벤트 관련 질문 입니다.

자바에서 이벤트를 등록할때 무슨 무슨 이벤트가... 언젠가는 스택오버플로우라던가 그런 메모리 낭비가 있지... 질문 내용을 읽어봤는데요. 아마, mfc의 PreTranslate나 win32...

스택 개발자 질문

... 풀스택이랑 무슨 차이인가요? 안녕하세요 질문자님!... 풀스택은 흔히 자바 프론트엔드와 백엔드 를 배운다고... 혹시 국비지원을 희망하시거나 IT취업 관련하여...