Algorithm Study/Java

자바에서 static 변수의 사용

728x90
반응형

static 변수를 사용할 때

  • myStaticVariable 변수는 클래스를 이용하는 전역에서 공유
  • myStaticVariable을 obj1을 통해 정의했지만, obj2에서도 동일한 myStaticVairable 메모리를 가리키고 있음
public class MyClass {
    static int myStaticVariable; // 정적 변수

    public static void main(String[] args) {
        MyClass obj1 = new MyClass();
        MyClass obj2 = new MyClass();

        obj1.myStaticVariable = 10; // obj1의 인스턴스에서 정적 변수에 값을 할당
        System.out.println(obj2.myStaticVariable); // 10 출력
    }
}

 

static 변수를 사용하지 않을 때

  • 클래스가 생성될 때 각각의 인스턴스 변수로 myStaticVariable이 생성
  • obj1에서 정의된 myStaticVariable은 obj2에서 정의된 myStaticVariable과 다른 메모리를 가리킴
public class MyClass {
    int myStaticVariable; // 인스턴스 변수

    public static void main(String[] args) {
        MyClass obj1 = new MyClass();
        MyClass obj2 = new MyClass();

        obj1.myStaticVariable = 10; // obj1의 인스턴스 변수에 값을 할당
        obj2.myStaticVariable = 20; // obj2의 인스턴스 변수에 값을 할당

        System.out.println(obj1.myStaticVariable); // 10 출력
        System.out.println(obj2.myStaticVariable); // 20 출력
    }
}