Static

staitc은 고정된이란 의미를 가지고 있다. static이라는 키워드를 사용하여 static변수와 static메소드를 만들 수 있는데 다른말로 정적필드와 정적 메소드라고도 하며 이 둘을 합쳐 정적 멤버라고 한다.(클래스 멤버라고도 한다.) 정적 필드와 정적 메소드는 객체에 소속된 멤버가 아니라 클래스에 고정된 멈버이다. 그렇기에 클래스 로더가 클래스를 로딩해서 메소드메모리 영역에 적재할 때 클래스 별로 관리된다. 따라서 클래스의 로딩이 끝나는 즉시 바로 사용할 수 있다.

정적 멤버 생성

static키워드를 통해 생성된 정적멤버들은 Heap영역이 아닌 Static영역에 할당된다. static영역에 할당된 메모리는 객체가 공유하여 하나의 멤버를 어디서든지 참조할 수 있는 장점을 가지지만 ㅁ의 관리 영역 밖에 존재하기에 static영역에 있는 멤버들은 프로그램의 종료시까지 메모리가 할당된 채로 존재하게 된다. 그렇기에 static을 너무 남발하게 되면 만들고자 하는 시스템 성능에 악영향을 줄 수 있다.

정적 멤버 선언

필드나 메소드를 생성 시 인스턴스로 생성할 것인지 정적으로 생성할 것인지에 대한 판단 기준은 공용으로 사용하느냐 아니냐로 내리면 된다. 그냥 생성한다면 자동으로 인스턴스로 생성되며 정적으로 생성하려면 메소드 선언시 static이라는 키워드를 추가적으로 붙이면 된다.