23년 1회 Java 관련 질문이 있습니다.
26:31 에서 static int b=0이 정적변수라고 말씀하셨는데요.... 그러면 나중에 출력하는 곳에서 네번째 st.a 출력값은 20인데, 두번째 st.b 출력값은 11이 된다고 하셨는데 class Static란에서 정적변수로 b=0을 선언했으니까 0이 아닐까 하고 헷갈리거든요. 답변 부탁드립니다.
답변 3
1
저 0은 프로그램을 시작하는 순간 세팅됩니다.
클래스 정적 변수는 인스턴스랑 상관없이 프로그램을 돌리는 순간 아예 세팅되어서 시작합니다.
위에서 a에 있는 10을 할당했으니 b에도 10이 들어가있을 겁니다.
그것을 ++했으니 당연히 11이 됩니다.
0
안녕하세요, 인프런 AI 인턴입니다. parkcw9677님.
Java에서 static 키워드는 클래스 레벨의 변수 또는 메소드를 정의하는 데 사용됩니다. 이 static 변수는 해당 클래스의 모든 인스턴스가 공유하는 하나의 저장 공간을 의미합니다. 따라서 특정 인스턴스에서 이 값을 변경하면, 다른 모든 인스턴스에서도 동일한 업데이트된 값을 공유하게 됩니다.
질문하신 부분에 대해 설명드리면, static int b = 0;으로 초기화된 b는 Static 클래스의 정적 변수로, 클래스가 로드될 때 초기화됩니다. 프로그램 실행 도중 static.b = a;처럼 값을 대입했다면, 이후에 static.b++ 구문이 포함되어 b값이 증가하게 됩니다. 그래서 나중에 b의 출력값은 초기값이 아닌 변경된 값 11이 나타나는 것입니다.
st.a의 경우에는 인스턴스 변수이며, 각 인스턴스가 고유의 값을 가집니다. Static 클래스의 초기 상태에 a가 20으로 설정되어 있기 때문에, 인스턴스가 생성될 때 이 값을 따르게 됩니다.
유사한 질문과 답변을 포함한 게시물로 추가 학습을 추천 드립니다:
- 23년 1회 println(st.b) ? - 정적 변수의 동작과 관련된 설명을 확인하실 수 있습니다.
- 섹션6 23년 1회 JAVA 출력값 작성하기 문제 질문 드립니다. - 정적 변수와 인스턴스 변수가 프로그램 내에서 어떻게 처리되는지 설명합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
26년2회 실기기출은 언제쯤...
0
13
2
이론 공부법 요약본 버전 업데이트 문의
0
15
2
정처기 필기 준비할때 이 이론을 다시 외워도 될까요?
0
54
2
조건 반복문 질문: for 문 ?
0
63
1
정처기 26-2회. 9번 질문드립니다!
0
79
1
이론 보면서 질문이 있습니다.
0
75
2
정보처리기사 실기 26년 2회 SRT 스케줄링 문제 단위 질문
0
88
2
유튜브(정보처리기사 실기 | 26년 2회 기출문제 코드 해설)
0
148
2
262 정처기 실기 C언어코딩
0
46
1
정보처리기사 262 실기 Hash(해시) 질문
0
80
2
static 변수 질문입니다.
0
61
2
파이썬 4강 질문입니다.
0
69
2
모의고사 1회 3번문제
0
89
3
41강 30:10
0
67
2
이론 공부법 질문 있습니다.
0
89
2
부모의 생성자 관련 질문
0
66
2
시험지 문제에 필기해도 되나요?
0
89
3
41강 11:23
0
59
2
4강파이썬 질문입니다
0
54
2
try-catch 핸들러명
0
65
2
36강 3:48
0
64
2
35강 18:27
0
66
2
자식 코드 내 super() 생략
0
60
2
출력질문
0
76
2





