JAVA/포스팅

자바 객체 클래스 변수 (Class Variables 또는 Static Variables)

짜집퍼박사(짜박) 2023. 11. 6. 13:49

자바에서 객체 클래스 변수(Class Variables), 또는 정적 변수(Static Variables)는 해당 클래스의 모든 객체(인스턴스) 간에 공유되며, 클래스 수준의 데이터를 나타내는 데 사용됩니다. 모든 객체가 동일한 클래스 변수를 참조하며, 클래스가 로드될 때 메모리에 할당됩니다. 다음은 자바 클래스 변수에 대한 설명입니다.

 

1. 클래스 변수 선언

클래스 변수는 클래스 내부에서 선언되며, static 키워드를 사용하여 표시됩니다.
클래스 변수는 모든 객체(인스턴스)가 공유하므로 객체가 생성되지 않아도 클래스를 로드할 때 메모리에 할당됩니다.

public class Student {
    static int studentCount; // 클래스 변수
    String name;            // 인스턴스 변수
}

 

2. 클래스 변수 초기화

클래스 변수는 클래스가 로드될 때 초기화됩니다. 초기화 값이 명시적으로 지정되지 않는 경우, 정수형 변수는 0, 불리언 변수는 false, 객체 변수는 null로 초기화됩니다.

public class Student {
    static int studentCount = 0; // 클래스 변수 초기화
    String name;                 // 인스턴스 변수
}

 

3. 클래스 변수의 사용

클래스 변수는 객체를 생성하지 않고도 클래스 이름을 통해 접근할 수 있습니다.
클래스 변수는 모든 객체가 공유하는 값을 저장하므로, 하나의 객체에서 변경한 내용은 다른 객체에도 영향을 미칩니다.

Student.studentCount++; // 클래스 변수 사용
int count = Student.studentCount; // 클래스 변수 읽기

 

4. 클래스 변수와 객체 간 데이터 공유

클래스 변수는 객체 간에 데이터를 공유하기 위해 사용됩니다. 모든 객체가 동일한 클래스 변수를 참조하므로 변경 사항은 모든 객체에 영향을 미칩니다.

Student student1 = new Student();
Student student2 = new Student();
student1.studentCount++; // student2.studentCount도 증가됨

 

5. 데이터 보존 및 상태 추적

클래스 변수를 사용하여 데이터를 유지하고 추적할 수 있습니다. 예를 들어, 객체가 생성될 때마다 학생 수를 추적하는 데 사용할 수 있습니다.

public class Student {
    static int studentCount; // 학생 수를 추적하는 클래스 변수

    public Student() {
        studentCount++; // 객체가 생성될 때 학생 수 증가
    }
}

 

6. 클래스 변수의 범위 및 수명

클래스 변수는 클래스 수준에서 접근 가능하며, 클래스가 로드될 때 메모리에 할당됩니다.
클래스 변수의 수명은 클래스가 로드되고 언로드될 때까지 지속됩니다.

{
    Student.studentCount++; // 클래스 변수 사용 가능
}

 

클래스 변수는 객체 간 데이터 공유와 클래스 수준의 데이터 관리에 사용됩니다. 클래스 변수를 사용하여 클래스 수준에서 데이터를 추적하거나 공유하는 데 효과적이며, 객체 생성과 관련 없이 클래스 이름을 통해 접근할 수 있습니다.

 

With ChatGPT