'정적인', '고정된' 이란 뜻을 가지고 있습니다.
JAVA에서 역할도 Static 앞에 붙는 변수나 메서드는 어떤 객체에 소속되는 것이 아닌, <클래스에 고정되어 있는 변수나 메서드> 입니다.
각 객체들에서 공통적으로 하나의 값이 유지되어야 할 경우 static을 유용하게 사용할 수 있습니다.
객체 생성 없이도 메서드나 변수를 사용할 수 있습니다.
자동으로 메모리의 static 영역에 생성이 됩니다. 자동으로 메모리에 올라가기 때문에 객체를 생성할 필요 없이 사용이 가능합니다.
일반적인 메서드는 객체를 생성하면 Heap 메모리 영역에 올라가면서, Garbage Collector에 의해 자동으로 관리가 됩니다. 사용하지 않는 객체의 경우 알아서 삭제시키면서 메모리를 관리해준단 것입니다.
Static 메서드는 static 영역에 존재하기 때문에 관리를 받지 못합니다. 따라서 프로그램이 종료될 때 메모리를 해제하게 되는데, 이 때문에 과도한 static 선언은 메모리의 과부하를 일으킵니다.
static 메서드는 프로그램 실행과 동시에 메모리에 올라가기 때문에 인스턴스 변수는 사용이 불가합니다.
인스턴스 변수는 객체를 생성해야만 사용이 가능하기 때문에 객체를 생성하기전에 먼저 메모리에 올라가는 static 메서드는 사용할 수 없는 것입니다.