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); } }