작성
·
203
0
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
여기에 질문 내용을 남겨주세요.
Data data1 = new Data(10);에서
method1에서 생성된 data1은 method1 매서드의 지역이다.
new Data(10)에 의해 생성된 인스턴스의 참조값이 data1에 저장된다.
그리고 new Data(10)에 의해 만들어진 Data 클래스의 인스턴스는 힙 영역에 저장이 된다.
이렇게 이해를 했는데,
힙 영역에 저장되는게
new Data(10)에 의해서 생성된 인스턴스의 참조값
즉, Data 클래스에 들어가서 value 값에 10을 넣어서 보관하고 있는 주소값 즉 참조값을 data1이 보관하고 있는 건가요?
그리고 그 참조값을 힙 영역에서 보관하고 있는건가요?
지역변수가 data1이고, 이게 스택영역에서 관리하는 것은 이해가 됬는데, 여기서 인스턴스는 명확하게 어떤것을 의미하는지 이해가 안되는 것 같습니다.
답변 1
0
안녕하세요. 서연님, 공식 서포터즈 코즈위버입니다.
메모리의 단위는 1byte 인데요, 1byte의 블록이 순차적으로 나열되어 있습니다.
우리가 new 연산자를 이용해 Data 클래스의 인스턴스를 생성하면, 논리상으로 '힙 영역'으로 지정된 메모리에 Data의 인스턴스가 자리잡게 됩니다. 시작 메모리는 어디가 될지 사용자가 알 수 없지요. 인스턴스의 크기는 필드변수의 종류와 갯수에 따라 결정됩니다.
이렇게 메모리에 위치한 Data 인스턴스의 시작위치를 data1 이 갖고 있습니다. 그래서 언제든 data1을 이용해 힙 영역에 존재하는 인스턴스 위치로 이동할 수 있지요.
감사합니다.