해결된 질문
작성
·
46
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다. 한상연님.
질문 주신 Java의 static 개념 문제는 프로그래밍에서 static 변수와 그 작동 방식을 이해하는 데 중요한 역할을 합니다. static 변수는 클래스 레벨에서 공유되며, 클래스의 모든 인스턴스들이 이 변수를 공유합니다. 따라서 인구(person_count) 값이 증가함에 따라 person_count++로 static 변수를 증가시키게 되고, 이 값은 모든 인스턴스에게 모두 동일하게 적용됩니다.
static 변수의 특성: static 변수(person_count)는 클래스에 소속되므로, 생성된 모든 객체가 이 변수 값을 공유하게 됩니다. 따라서 한 인스턴스에서 변수를 증가시키면 다른 모든 인스턴스에도 같은 변경이 반영됩니다.
age++의 동작 방식: 반면에 age는 인스턴스 변수로, 새로운 객체가 생성될 때마다 새롭게 할당됩니다. 각 객체만의 고유한 값을 가지게 되므로, 다른 인스턴스와 공유되지 않습니다.
다시 말해, 객체가 생성될 때마다 person_count가 증가하므로 인구(person_count) 값이 2이라면 ‘김길동 1’에서 생성된 객체가 ‘김길동 2’로 불리지 않는 이유는, 이 이름은 인스턴스가 속한 곳에서 특정 인덱스와는 관련이 없이 각자의 값을 가지기 때문입니다.
자세한 예시와 설명은 아래의 기존 질문 관련 답변을 참고해 주세요:
이 과정을 이해하시고 어떤 상황에서 인스턴스 변수와 static 변수를 쓰는 게 적절한지 알아두시면 도움이 될 것입니다. 🙂
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
답변 감사합니다.
정리하자면 person_count 앞에 static이 붙여있기 때문에 변수 값을 공유하게 되는거고
age는 public이기 때문에 새로운 객체가 생성될 때마다 새롭게 갱신된다는 말씀이신가요?
전 CLass Person안에 person_count랑 age 둘다 있는데 왜 둘다 변수값을 공유하는게 아니지? 라고 의문의 들었습니다.