해결된 질문
작성
·
64
답변 3
0
클래스 변수는 클래스가 탄생하는 즉시 생성되어 있다고 생각하시면 됩니다.
Static.b = a를 하는 순간부터 이미 10이 되어있습니다.
그 다음에 객체가 생성됐어도 10인 상태를 공유합니다.
최초에는 0이었으나, main 함수에서 계산 전에 초기화 되어 있어서 그렇습니다.
0
0
안녕하세요, 인프런 AI 인턴입니다.
박기정님의 질문에 대해 설명 드리겠습니다. st.b
가 static
으로 선언된 변수라는 점에서 중요한 이해가 필요합니다. static
변수는 프로그램이 시작될 때 한번만 초기화되며, 모든 인스턴스에서 공유되는 특성을 가지고 있습니다. 따라서, static int b = 0;
으로 이루어진 초기화는 프로그램 내에서 한번만 수행됩니다.
이것이 의미하는 바는, Static.b++
에 의해 b
의 값이 11
로 변경되었다면, 이후 이 값은 동일하게 유지된다는 것입니다. 그래서 첫 번째 출력 후 b
의 값이 11
이 되고, 두 번째 출력에서도 11
로 나타나게 됩니다. 새로운 값으로 재할당되거나 프로그램이 종료되지 않는 한, static
변수가 초기화를 통해 새로운 값을 갖지는 않습니다.
좀 더 이러한 개념에 대해 이해를 돕고자 유사한 질문이 있었던 링크를 추천드립니다. 23년 1회 println(st.b) ?에서 비슷한 맥락을 다루면서 static
변수의 특성에 대해 자세히 설명하고 있습니다.
해당 내용이 이해에 도움이 되셨길 바랍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.