Computer Science

[객체지향프로그래밍] static 변수에 대하여(non-static 변수와 어떻게 다를까?)

imsunbow 2024. 6. 12. 12:22

객체지향프로그래밍에서 static 변수와 non-static 변수는 중요한 개념이다. 두 가지는 사용 방법과 동작이 다르다.

static 변수는 클래스에 속하며 클래스의 모든 인스턴스가 공유하는 변수다. static 변수는 클래스 수준에서 선언되고 클래스가 로드될 때 초기화되며 프로그램이 종료될 때까지 존재한다. 클래스의 모든 인스턴스가 동일한 static 변수를 공유하며, static 변수의 값을 변경하면 그 변경 사항이 클래스의 모든 인스턴스에 반영된다. static 변수는 한 번만 메모리에 할당되므로 메모리 사용량을 줄일 수 있다. static 변수는 클래스명.변수명 형식으로 접근하며 객체를 생성하지 않고도 접근할 수 있다.

non-static 변수는 인스턴스 변수로, 각 인스턴스마다 별도로 존재하는 변수다. non-static 변수는 인스턴스 수준에서 선언되며 객체를 생성할 때마다 초기화된다. non-static 변수는 각 인스턴스마다 독립적인 값을 가지며, 한 인스턴스에서 non-static 변수 값을 변경해도 다른 인스턴스에는 영향을 주지 않는다. 각 인스턴스마다 별도로 메모리를 사용하므로 인스턴스가 많아지면 메모리 사용량이 증가할 수 있다. non-static 변수는 객체명.변수명 형식으로 접근하며 객체를 생성해야만 접근할 수 있다.

다음은 static 변수와 non-static 변수를 사용하는 간단한 예제다:

```java
public class Example {
    // static 변수
    public static int staticVariable = 0;

    // non-static 변수
    public int instanceVariable = 0;

    public static void main(String[] args) {
        // static 변수는 클래스명으로 접근
        Example.staticVariable = 5;

        // 인스턴스를 생성하여 non-static 변수에 접근
        Example obj1 = new Example();
        Example obj2 = new Example();

        obj1.instanceVariable = 10;
        obj2.instanceVariable = 20;

        System.out.println("Static Variable: " + Example.staticVariable); // 출력: 5
        System.out.println("Object 1 Instance Variable: " + obj1.instanceVariable); // 출력: 10
        System.out.println("Object 2 Instance Variable: " + obj2.instanceVariable); // 출력: 20
    }
}
```

이 예제에서 staticVariable은 클래스 Example의 모든 인스턴스가 공유하는 변수다. 반면 instanceVariable은 각 인스턴스마다 별도로 존재한다. obj1과 obj2는 서로 다른 값을 가지지만, staticVariable은 모든 인스턴스에서 동일한 값을 공유한다. 이처럼 static 변수는 클래스 전체에 걸쳐 공유되고, non-static 변수는 각 인스턴스마다 고유한 값을 가진다. 이러한 차이를 이해하고 적절히 사용하는 것이 객체지향프로그래밍에서 중요하다.

반응형