강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

snow4532님의 프로필 이미지
snow4532

작성한 질문수

(2025) 일주일만에 합격하는 정보처리기사 실기

(기출) 2023년 1회 코드해석 문제

28분 23년1회 java문제 다시

해결된 질문

작성

·

56

1

설명을 들어서

a=10

static.b = a

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

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

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

 

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

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

답변 2

0

주말코딩님의 프로필 이미지
주말코딩
지식공유자

안녕하세요,

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) ? - 정적 변수와 관련된 설명이 포함되어 있습니다.

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

snow4532님의 프로필 이미지
snow4532

작성한 질문수

질문하기