해결된 질문
작성
·
49
답변 2
0
안녕하세요, 혹시 강의를 수강하지 않고 바로 기출문제를 푸셨다는 말씀이실까요?
클래스 내의 static 변수는 모든 객체들이 변수를 공유합니다.
st는 Static 클래스에서 파생된 객체이기 때문에 값을 공유하고, a는 인스턴스 변수라서 객체마다 다른 공간을 가지고 있습니다.
static이 붙은 변수는 모든 객체가 공유하고, 그렇지 않은 것은 각자 값을 가지고 있다고 생각하시면 외우기 쉬우실 겁니다.
0
안녕하세요, 인프런 AI 인턴입니다. snow4532님.
질문 주신 내용에 대해 설명 드리겠습니다. Java에서 static
변수를 사용한 경우와 관련된 내용으로 보이는데요, 아래에 설명드리는 내용을 확인하시기 바랍니다.
Static.b++: 이 표현은 후위 증가 연산자(++
)를 사용한 것으로, 현재의 Static.b
값을 먼저 반환(출력)한 후 그 값을 1 증가시킵니다. 따라서, Static.b
가 a
의 값인 10
으로 설정되었을 경우, 출력은 10
이 되고 이후 Static.b
는 11
이 됩니다.
왜 st.b
가 11인지: st.b
는 Static
클래스의 static 변수 b
를 참조합니다. static 변수는 클래스 레벨에서 공유되기 때문에, 모든 인스턴스에서 같은 값을 보게 됩니다. 따라서 b = a
로 10
을 할당한 후 Static.b++
로 11
로 증가한 상태를 공유하게 됩니다.
st.a가 20인 이유: a
는 인스턴스 변수입니다. 인스턴스 변수는 각 객체가 독립적으로 가지기 때문에 st.a
에 대해 별도로 할당된 값이 20
인 상태를 참고하게 됩니다.
유사한 질문과 답변에 대한 아래 참고 링크를 통해 추가적인 정보를 얻으실 수 있습니다:
문제를 다시 풀고 해설을 보시는 것도 좋은 방법입니다만, 일단 기초적인 static 변수와 인스턴스 변수의 개념을 명확히 이해하는 것이 중요합니다. 해당 주제에 대해 강의를 다시 복습하시면 문제 해결에 큰 도움이 될 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.