static 키워드는 메소드, 변수 등에 붙을 수 있고, 이것이 적용되면, 메모리 중에서, 메소드 영역에 따로 적재됩니다. 적재되는 시점도, 프로그램이 실행됨과 동시에 올라가고, 메모리 해제 또한, 프로그램이 종료되면서 됩니다.


static 멤버 변수나 멤버 메소드의 접근은 클래스 외부에서는, 클래스명으로 접근합니다. (인스턴스명으로도 할 수 있지만, 권장되는 방법은 아닙니다.)


클래스명.멤버 변수

클래스명.멤버 메소드();


이처럼, 메모리 영역 자체가 메소드 영역이라는 동떨어진 곳에 존재하기 때문에, static 은 일반 non-static (static 키워드가 붙지 않은) 과 구분을 둡니다. 예를 들어, static 메소드에서는, 클래스 내의 non-static 멤버 변수에 접근할 수 없고, non-static 메소드도 호출할 수 없으며, this 나 super 등의 키워드 또한 사용할 수 없습니다. (메모리 영역이 달라서) 하지만, 반대로, non-static 메소드에서는, static 메소드를 직접 호출 가능합니다. (같은 클래스 내의 메소드라면)

by kkikkodev 2015. 6. 23. 02:46