인프런 커뮤니티 질문&답변
28분 23년1회 java문제 다시
해결된 질문
작성
·
63
답변 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) ? - 정적 변수와 관련된 설명이 포함되어 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





