정보처리기사 실기 - 2023년 1회 자바 기출 풀이(static 필드와 인스턴스 필드, 후위증가 연산자 동작 확인 문제)

Alchemist·2025년 10월 5일

정보처리기사

목록 보기
69/114

✨ 문제

class Static{
    public int a = 20;
    static int b = 0;
}

public class Main{
    public static void main(String[] args) {
        int a;
        a = 10;
        Static.b = a;

        Static st = new Static();

        System.out.println(Static.b++);
        System.out.println(st.b);
        System.out.println(a);
        System.out.print(st.a);
    }
}

🎯 출제 의도

  • static 필드와 인스턴스 필드의 차이 이해
  • 클래스명으로 접근하는 static 멤버와 인스턴스로 접근하더라도 동일한 static 공유 확인
  • 후위 증가 연산자(x++)의 출력 값/증가 타이밍 파악

📘 개념 정리

1. static vs 인스턴스 필드

class Static{
    public int a = 20;   // 인스턴스 필드
    static int b = 0;    // 클래스(static) 필드
}
  • a: 객체마다 별도 보유 (인스턴스마다 값 독립)
  • b: 클래스가 하나만 보유 (모든 인스턴스가 공유)

2. 대입과 참조

int a = 10;
Static.b = a;     // b = 10
Static st = new Static(); // st.a == 20
  • Static.b는 클래스 전체에서 공유되는 값 → 10으로 설정
  • 새 인스턴스 sta는 20 (기본값 유지)

3. 반복 흐름

System.out.println(Static.b++); // 출력 후 증가
  • 출력 값은 10, 출력이 끝난 직후 b11이 됨
  • 이후 st.b도 같은 static 변수 참조 → 11 출력

📝 풀이 과정

순서코드상태/계산출력
1a = 10; Static.b = a;b = 10
2System.out.println(Static.b++);출력 시점 값 10 → 그 후 b=1110
3System.out.println(st.b);같은 static b 참조 → 1111
4System.out.println(a);지역변수 a = 1010
5System.out.print(st.a);인스턴스 필드 a = 2020

✅ 최종 출력 결과

10
11
10
20

💡 정리

이 문제에서 꼭 알아야 할 개념:

  • static 필드는 클래스 전체에서 하나만 존재, 인스턴스로 접근해도 동일한 값을 본다.
  • x++(후위증가)은 현재 값을 먼저 사용하고, 그 다음에 증가한다.
  • 인스턴스 필드 st.a는 객체마다 별도로 유지되므로 20이 출력된다.
profile
html_programming_language

0개의 댓글