강의

멘토링

커뮤니티

Inflearn Community Q&A

snow45328137's profile image
snow45328137

asked

(2026) Pass the Information Processing Engineer Practical Exam in Just One Week

(Past Exam) 2023 First Session Code Interpretation Problem

28분 23년1회 java문제 다시

Resolved

Written on

·

70

1

설명을 들어서

a=10

static.b = a

니까 static.b++의 출력값은 10이고, 이후 11이 된다고 이해를 했는데,

그러면 그 아래 출력값 a가 10 이면 그대로 똑같이 10이 아니라

왜 st.a는 class Static의 20을 가져오나요?

 

두번째 출력값은 바로 위 출력값에서 계산된 걸 가져왔는데

네번째 출력값은 왜 가장 위의 클래스 거를 가지고 오는지 개념이 이해가 안됩니다

pythonjavac정보처리기사

Answer 2

0

weekendcode님의 프로필 이미지
weekendcode
Instructor

안녕하세요,

3번째 줄의 a는 그냥 정수형태의 숫자일 뿐입니다.

st.a는 st라는 객체가 가지고 있는 인스턴스 변수이고, 이건 해당 객체가 태어날 때 그렇게 초기화됩니다.

지금 Static 클래스에서 태어나는 모든 객체는 최초로 a라는 값에 20을 할당 받은 상태에서 태어나기 때문입니다. (단, 공유 값은 아니고 각자 20을 가지고 있는 형태입니다.)

0

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

질문하신 내용은 클래스의 정적 변수(static variable)와 인스턴스 변수(instance variable)에 대한 이해를 필요로 하는 부분입니다. 정적 변수와 인스턴스 변수의 차이와 그들이 어떻게 동작하는지를 정확히 이해하는 것이 중요합니다.

  • 정적 변수 (static variable): 클래스에 의해 초기화되며, 클래스에 속한 모든 객체가 이 정적 변수를 공유합니다. 즉, 어떤 객체에서든 이 값을 변경하면 같은 클래스의 다른 모든 객체에서도 변경된 값이 반영됩니다.
  • 인스턴스 변수 (instance variable): 각 객체마다 독립적으로 존재하며, 객체가 생성될 때 함께 초기화됩니다. 각 객체는 자신만의 인스턴스 변수를 가지고 있으며, 다른 객체의 인스턴스 변수와는 값이 독립적입니다.

이제 질문에 대한 답변을 드리겠습니다. static.b++ 구문으로 인해 b 값이 10에서 11로 증가한 사항은 정적 변수이기 때문에 모든 객체에 공유되고, 그 다음 st.a는 인스턴스 변수이므로 class Static에서 초기화된 따로 저장된 값을 차용합니다. 따라서 st.a는 객체가 생성될 때 정해진 20의 값을 그대로 따릅니다.

아래 질문에 더 관련성을 가진 유사한 답변을 참고하실 수 있습니다:
- 23년 1회 java - 김다훈님께서 정적 변수와 인스턴스 변수를 구분하는 것에 대해 질문하셨고 이에 대한 답변이 제공되었습니다.

아래의 링크에서는 클래스와 객체의 동작 원리에 대한 더 많은 정보를 얻으실 수 있습니다:
- 23년 1회 println(st.b) ? - 정적 변수와 관련된 설명이 포함되어 있습니다.

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

snow45328137's profile image
snow45328137

asked

Ask a question