더북(TheBook)

static한 메서드는 객체를 생성하지 않아도 static한 메서드나 static한 변수(클래스 변수)를 사용할 수 있지만, static하지 않은 변수(인스턴스 변수)는 사용할 수 없습니다. static한 메서드가 사용하는 시점에 해당 클래스가 인스턴스화되지 않았을 수도 있기 때문입니다. 좀 어려울 수도 있는데, 단순하게 생각하면 됩니다. static하지 않은 변수를 사용하겠다는 것은 객체를 생성하지도 않았는데 객체의 속성을 사용하겠다고 하는 것이므로 당연히 안 됩니다. 이후 예제들을 하나씩 수행하면서 조금씩 이해해나가면 됩니다.

 

그럼 static한 변수를 하나 선언하겠습니다. static한 변수란 static 키워드를 이용해 선언한 변수를 말합니다. 물론 변수를 선언하는 방법은 다 똑같습니다.

package javaStudy;

public class VariableScopeExam {
    int globalScope = 10;
    static int staticVal = 7;
    
    public void scopeTest(int value) {
        int localScope = 20;
        
        System.out.println(globalScope);
        System.out.println(localScope);
        System.out.println(value);
    }
    
    public void scopeTest2(int value2) {
        System.out.println(globalScope);
//      System.out.println(localScope);
//      System.out.println(value);
        System.out.println(value2);
    }

    public static void main(String[] args) {
        System.out.println(staticVal);
    }
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.