강의

멘토링

로드맵

Inflearn brand logo image

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

snow4532님의 프로필 이미지
snow4532

작성한 질문수

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

(기출) 2023년 1회 코드해석 문제

28분 문제..

해결된 질문

작성

·

49

0

28분대에 있는 23년 1회 JAVA 문제인데요.

출력값 처음에

Static.b++는

a=10

static.b=a

때문에 출력값 10인 건 이해가 되고,

st.b는 왜 0이 아니고, 11인지 이해가 안되고..

 

마지막 출력값 st.a은 왜 10이 아니고 20인지 이해가 안되네요. 기출문제부터 따라가기 너무 힘든데 이거 강의를 다시 들어야하나요?

 

혼자서 문제를 풀면 문제 설명하는 흐름대로 생각이 잘 안나는 것 같아요

답변 2

0

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

안녕하세요, 혹시 강의를 수강하지 않고 바로 기출문제를 푸셨다는 말씀이실까요?

클래스 내의 static 변수는 모든 객체들이 변수를 공유합니다.

st는 Static 클래스에서 파생된 객체이기 때문에 값을 공유하고, a는 인스턴스 변수라서 객체마다 다른 공간을 가지고 있습니다.

 

static이 붙은 변수는 모든 객체가 공유하고, 그렇지 않은 것은 각자 값을 가지고 있다고 생각하시면 외우기 쉬우실 겁니다.

0

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

질문 주신 내용에 대해 설명 드리겠습니다. Java에서 static 변수를 사용한 경우와 관련된 내용으로 보이는데요, 아래에 설명드리는 내용을 확인하시기 바랍니다.

  1. Static.b++: 이 표현은 후위 증가 연산자(++)를 사용한 것으로, 현재의 Static.b 값을 먼저 반환(출력)한 후 그 값을 1 증가시킵니다. 따라서, Static.ba의 값인 10으로 설정되었을 경우, 출력은 10이 되고 이후 Static.b11이 됩니다.

  2. st.b 가 11인지: st.bStatic 클래스의 static 변수 b를 참조합니다. static 변수는 클래스 레벨에서 공유되기 때문에, 모든 인스턴스에서 같은 값을 보게 됩니다. 따라서 b = a10을 할당한 후 Static.b++11로 증가한 상태를 공유하게 됩니다.

  3. st.a가 20인 이유: a는 인스턴스 변수입니다. 인스턴스 변수는 각 객체가 독립적으로 가지기 때문에 st.a에 대해 별도로 할당된 값이 20인 상태를 참고하게 됩니다.

유사한 질문과 답변에 대한 아래 참고 링크를 통해 추가적인 정보를 얻으실 수 있습니다:

관련 질문 URL:

문제를 다시 풀고 해설을 보시는 것도 좋은 방법입니다만, 일단 기초적인 static 변수와 인스턴스 변수의 개념을 명확히 이해하는 것이 중요합니다. 해당 주제에 대해 강의를 다시 복습하시면 문제 해결에 큰 도움이 될 것입니다.

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

snow4532님의 프로필 이미지
snow4532

작성한 질문수

질문하기