inflearn logo
강의

講義

知識共有

キム・ヨンハンの実践Java - 中級1編

ローカルクラス - ローカル変数 キャプチャ1

지역 클래스 예제3 지역변수 질문

解決済みの質問

69

dlsvmfjs11048007

投稿した質問数 2

0

[질문 내용]

지역 클래스 예제3 의 LocalPrinter 인스턴스 생성 직후 메모리 그림인데 이때 스택 영역에서 이미지에 질문이 있습니다.

process 메소드가 끝나면서 x002 를 리턴하는데 이를 받는 변수가 main 메소드 내에 printer 지역변수가 있어야 되지않나요?

더해서 localOuter 의 변수또한 가져야 된다고 생각해서

스택 프레임이 사라지면 printer 변수에 담긴 객체는 '어떻게 지역변수와 파라미터를 기억하냐?' 에 대해서는 힙 영역의 객체를 가리키고 LocalPrinter 객체를 만들때 사라질 운명인 지역변수를 복사해서 넣어둔다고 이해했습니다.

java 객체지향

回答 2

1

yh

안녕하세요. 무깨님

생각하신 내용이 맞습니다. main 프레임에 있어야 합니다 🙂

다음 버전에 패치할게요!

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다.

무깨님의 질문은 Java의 지역 클래스와 변수 캡처와 관련하여 메모리 관리 및 스택 프레임의 사라짐에 대해 이해를 돕기 위한 것입니다. Java의 내부 클래스나 지역 클래스에서 구현된 이러한 개념은 놀랄 만큼 복잡하지만 매우 흥미롭습니다.

Java에서 내부 클래스는 자신을 감싸고 있는 메서드의 지역 변수와 매개 변수를 사용할 수 있습니다. 하지만 이러한 변수들은 메서드가 종료되면 사라지기 때문에, Java는 내부 클래스가 지역 변수의 ‘복사본’을 힙 메모리에 저장하여 해당 변수의 값에 접근할 수 있도록 합니다. 이를 통해 내부 클래스가 스코프 외부의 변수를 안전하게 참조할 수 있게 됩니다.

관련 강의 설명:

  • 지역 클래스에서는 지역 변수가 final이거나 사실상 final이어야 객체 생성을 통해 참조할 수 있습니다. 메서드가 종료되어도 내부 클래스를 통해 변수의 일종의 “스냅샷”이 남게 되는 것을 의미합니다.

설명 링크 및 추가 정보:

이러한 설명은 궁극적으로 무깨님이 이해하고자 하는, Java 프로그램이 메모리 및 스택에서 지역 변수를 어떻게 관리하고 참조하는지에 대한 통찰력을 제공할 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

문제와 풀이

0

23

1

섹션 2 퀴즈 9번

0

32

2

강의노트 내용이 이해가 되지 않아서 문의드립니다.

0

47

1

중급1편, 래퍼클래스 문제와풀이2 로또제너레이터 질문

0

67

1

setVlaue질문

0

93

3

안녕하세요 코딩테스트와 병행하고 싶어서 질문드립니다.

0

93

1

findValue의 파라메터까지 래퍼클래스 배열인 이유가 있을까요?

0

74

1

아래 글처럼 toString() 강의부터 화면이 안보여요

0

99

2

TemporalAdjusters의 lastDayOfNextMonth(), lastDayOfNextYear() 메서드 지원 안함

0

84

2

오타 제보도 되나요?

0

90

2

래퍼클래스 박싱 출력

0

60

1

자바 equals() 메소드에 대한 물리적 동일성, 논리적 동등성 질문

0

105

3

강의록 오타 제보

0

69

2

자바의 기본 클래스들에 관하여

0

70

1

실무에서 중첩(내부) 클래스 사용하나요?

0

79

1

지역 클래스 - 지역 변수 캡처3

0

55

1

12:30 의 newClassGrade 질문이 있습니다.

0

57

1

날짜와 시간 문제풀이가 막히는데

0

100

2

내부 클래스의 바깥 클래스 참조

0

68

1

스트링 풀, new String()

0

105

3

정적 중첩 클래스 사용 이유

0

97

1

status.getCode() 대신 status.code 사용

1

81

1

메서드의 지역변수명과 내부클래스의 멤버메서드에서의 지역변수명의 중복관련

0

75

1

타입 관련해서 질문 드립니다.

0

53

1