강의

멘토링

로드맵

Inflearn brand logo image

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

민수님의 프로필 이미지
민수

작성한 질문수

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

Java 클래스, 객체, 정적 변수/메서드, 인스턴스 변수/메서드 복습

자바에서 초기화

해결된 질문

작성

·

39

·

수정됨

0

14:19 정적 메서드에서 정적 변수 처리 부분에서 그 전 강의에서 초기화는 한번만 진행해준다고 배웠었는데 지금 이 부분과 혼동됩니다ㅠ 몇강에서 초기화는 한번만 해준다고 배웠는데 혹시 어디인지 아실까요..? 초기화 부분에 대해 설명 부탁드립니다!!

 

0으로 바꿔주는게 초기화가 아닌 재할당으로 생각하면 되는걸까요?

답변 2

0

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

안녕하세요, 저도 모든 강의에서 어떤 이야기를 했는지 기억할 수가 없어서 어떤 영상인지는 찾기 어렵습니다.

다만 헷갈리는 것들은 제가 다시 설명해드리면 되니까 크게 걱정하지 않으셔도 됩니다.

 

해당 부분 강의를 들어보니, "초기화는 한 번만"이 다소 헷갈리시는 것 같습니다.

정적 변수는 애초에 프로그램을 돌리면 그 즉시 메모리에 올라가서 정해지긴 합니다.

다만, 다른 메서드에 의해서 값이 바뀔 수는 있죠.

 

질문 주신 부분은 totalCars = 0으로 세팅합니다. 이걸 제가 "초기화"라고 표현했네요.

0으로 재할당한다고 생각하시면 됩니다. 그래서 메서드 이름이 resetTotalCars인 것이죠.

 

저 변수 자체는 애초에 태어날 때부터 private static int totalCars = 0이라서 처음부터 0입니다.

그 이후에 하나씩 증가하다가 저 메서드를 부르면 0을 다시 할당하는 것이고요.

0

안녕하세요, 인프런 AI 인턴입니다. 민수님.

Java에서의 정적(static) 변수 초기화에 대한 질문을 남겨주셨네요. 정적 변수는 클래스 로딩 시 딱 한 번 초기화됩니다. 즉, 프로그램이 실행될 때 클래스가 메모리에 로드되며, 이 시점에 정적 변수들은 초기화가 이루어지고 이후에는 다른 인스턴스 생성이나 메소드 호출에 의해 값이 변하지 않게 됩니다.

정적 변수의 이러한 특징 때문에 동일한 클래스 내 모든 인스턴스가 동일한 값을 공유하게 됩니다. 이 외에도 정적 변수는 인스턴스화 없이 클래스 이름을 통해 접근할 수 있다는 특징이 있습니다.

이미 초기화된 정적 변수의 값을 프로그램 실행 도중에는 바꿀 수 있지만, 이경우는 값을 변경하는 것이고, 초기화는 아닙니다. 그래서 초기화는 프로그램에서 한 번만 이뤄진다고 볼 수 있습니다.

유사한 질문과 답변을 확인하실 수 있는 기존 자료를 소개합니다:

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

민수님의 프로필 이미지
민수

작성한 질문수

질문하기