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

한상연님의 프로필 이미지
한상연

작성한 질문수

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

▶ 이론 통합 요약본 파일 다운 받는 곳 ◀ (v0.8)

정보처리기사_실기_이론파트 p16의 7번 Java static 개념 문제 질문

해결된 질문

작성

·

46

0

정답 부분에서 김길동 1 부분이 이해가 가지 않아 질문드립니다.

'김길동 2' 가 답인줄 알았는데..

왜 인구 2인데 김길동 2 가 아닌지 궁금합니다..

person_count++와 age++는 하나의 단락안에 있어 인구 2면 김길동 2/ 인구 1이면 김길동 1로 되어야 하는 거 아닌가요?

답변 2

0

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

저기 1은 age입니다.

age는 인스턴스 메서드로 공용 공간이 아니라 각자 가지고 있는 변수입니다.

 

지금 age는 생성될 때 생성자를 통해 1만 증가됩니다.

0

안녕하세요, 인프런 AI 인턴입니다. 한상연님.

질문 주신 Java의 static 개념 문제는 프로그래밍에서 static 변수와 그 작동 방식을 이해하는 데 중요한 역할을 합니다. static 변수는 클래스 레벨에서 공유되며, 클래스의 모든 인스턴스들이 이 변수를 공유합니다. 따라서 인구(person_count) 값이 증가함에 따라 person_count++로 static 변수를 증가시키게 되고, 이 값은 모든 인스턴스에게 모두 동일하게 적용됩니다.

  1. static 변수의 특성: static 변수(person_count)는 클래스에 소속되므로, 생성된 모든 객체가 이 변수 값을 공유하게 됩니다. 따라서 한 인스턴스에서 변수를 증가시키면 다른 모든 인스턴스에도 같은 변경이 반영됩니다.

  2. age++의 동작 방식: 반면에 age는 인스턴스 변수로, 새로운 객체가 생성될 때마다 새롭게 할당됩니다. 각 객체만의 고유한 값을 가지게 되므로, 다른 인스턴스와 공유되지 않습니다.

다시 말해, 객체가 생성될 때마다 person_count가 증가하므로 인구(person_count) 값이 2이라면 ‘김길동 1’에서 생성된 객체가 ‘김길동 2’로 불리지 않는 이유는, 이 이름은 인스턴스가 속한 곳에서 특정 인덱스와는 관련이 없이 각자의 값을 가지기 때문입니다.

자세한 예시와 설명은 아래의 기존 질문 관련 답변을 참고해 주세요:

이 과정을 이해하시고 어떤 상황에서 인스턴스 변수와 static 변수를 쓰는 게 적절한지 알아두시면 도움이 될 것입니다. 🙂

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

한상연님의 프로필 이미지
한상연
질문자

답변 감사합니다.

정리하자면 person_count 앞에 static이 붙여있기 때문에 변수 값을 공유하게 되는거고

age는 public이기 때문에 새로운 객체가 생성될 때마다 새롭게 갱신된다는 말씀이신가요?

 

전 CLass Person안에 person_count랑 age 둘다 있는데 왜 둘다 변수값을 공유하는게 아니지? 라고 의문의 들었습니다.

한상연님의 프로필 이미지
한상연
질문자

그리고 링크 걸어주신건... 재귀함수와 관련된거 같은데

static 변수와 인스턴스 변수 차이점에 관한 링크가 맞는지 확인부탁드립니다.

한상연님의 프로필 이미지
한상연

작성한 질문수

질문하기