본문 바로가기
Java_language

클래스 변수 vs 인스턴스

by 헬로제이콥 2025. 12. 1.

클래스 변수(정적 변수)와 인스턴스 변수의 차이를 아주 쉽게 설명하고, 이해하기 쉬운 짧은 예제와 실행 결과까지 보여드리겠습니다.

핵심 요약

  • 클래스 변수(static): 클래스 하나만 가지고 있는 변수 — 모든 객체가 같은 값을 공유합니다. 마치 학교 건물 한 채에 붙어 있는 학교 이름 표지판 같음.
  • 인스턴스 변수: 각 객체(인스턴스)마다 따로 있는 변수 — 객체마다 다른 값을 가질 수 있습니다. 마치 학생 한 사람 한 사람의 이름표 같음.

쉬운 비유

  • 학교(클래스)에는 '학교 이름'이 하나뿐(클래스 변수).
  • 학생(인스턴스)마다 '이름'이 다름(인스턴스 변수).

짧은 자바 예제 (클래스와 인스턴스 구분해서)

  1. Student.java

java

public class Student {
    // 클래스 변수: 모든 학생이 공유하는 학교 이름
    public static String schoolName = "한빛초등학교";

    // 인스턴스 변수: 학생 개인의 이름과 나이
    public String name;
    public int age;

    // 생성자
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // 간단 출력
    public void printInfo() {
        System.out.println("학교: " + schoolName + " | 이름: " + name + " | 나이: " + age);
    }
}
  1. Main.java (테스트)

java

public class Main {
    public static void main(String[] args) {
        Student s1 = new Student("철수", 10);
        Student s2 = new Student("영희", 11);

        // 초기 출력: 같은 학교 이름(클래스 변수), 다른 이름/나이(인스턴스 변수)
        s1.printInfo();
        s2.printInfo();

        // 클래스 변수 변경: 모든 학생에게 반영됨
        Student.schoolName = "빛나라초등학교";
        System.out.println("--- 학교 이름 변경 ---");
        s1.printInfo();
        s2.printInfo();

        // 인스턴스 변수 변경: 특정 학생만 바뀜
        s1.name = "철수개명";
        System.out.println("--- 철수 이름 변경 ---");
        s1.printInfo();
        s2.printInfo();
    }
}

예상 콘솔 출력

 
학교: 한빛초등학교 | 이름: 철수 | 나이: 10
학교: 한빛초등학교 | 이름: 영희 | 나이: 11
--- 학교 이름 변경 ---
학교: 빛나라초등학교 | 이름: 철수 | 나이: 10
학교: 빛나라초등학교 | 이름: 영희 | 나이: 11
--- 철수 이름 변경 ---
학교: 빛나라초등학교 | 이름: 철수개명 | 나이: 10
학교: 빛나라초등학교 | 이름: 영희 | 나이: 11

언제 무엇을 쓰나요? (한 문장씩)

  • 같은 값(모든 객체가 공유해야 하는 것): 클래스 변수(static)를 사용하세요. 예: 회사 이름, 세율, 전체 회원 수(카운트) 등.
  • 각 객체마다 다른 값: 인스턴스 변수를 사용하세요. 예: 사람의 이름, 잔액, 색깔 등.

'Java_language' 카테고리의 다른 글

상속이란?  (0) 2025.12.01
자바의 import  (0) 2025.12.01
캡슐화 (private)  (0) 2025.12.01
자바의 static과 this에 대해서  (0) 2025.12.01
자바 접근제어자(Access Modifier)  (0) 2025.12.01