static
이란 정적이다 라는 의미를 갖고 있습니다. 자바에서는 클래스에 고정된 멤버입니다. (그래서 클래스 멤버라고도 부릅니다.)
static 멤버
들은 클래스에 고정된 멤버입니다. 그래서 클래스 로더가 클래스를 로딩하면 메모리에 할당 시켜줍니다.
=> (클래스 로딩이 끝나면 바로 사용할 수 있다는 의미입니다.)
taewooblog님의 글을 참조하였습니다.
=> static 메소드
를 생성하면 인스턴스 생성 없이도 바로 호출이 가능하단 것을 알 수 있습니다.
class Name{
static void print() { //클래스 메소드
System.out.println("print_test!");
}
void print2() { //인스턴스 메소드
System.out.println("print_test!!!!!!!!!");
}
}
public class Static_ {
public static void main(String[] args) {
Name.print(); //인스턴스를 생성하지 않아도 바로 호출이 가능
Name name = new Name(); //인스턴스 생성
name.print2(); //인스턴스를 생성하여야만 호출이 가능
}
static은 전역적으로 쉽게 재사용하는 멤버나 잘 변하지 않는 변수나, 메소드를 사용할때 주로 사용됩니다.
만들어 놓고 클래스 호출, 객체 생성을 따로 할 필요없이 바로바로 사용할 수 있기 때문에 사용성이 좋습니다.
그렇기 때문에 실제 CS에서 메모리, 성능을 개선하기 위해 제안하는 방법을 질문으로 했을 경우 많이들 static을 사용해 선언한다고도 합니다.
- 왜?
모든 객체가 서로 공유하므로 메모리가 절약되며 연속적으로 그 값의 흐름 또한 이어갈 수 있기 때문입니다.
static
은 메모리 자원을 할당해놓고 사용하는 것이기 때문에 너무 많이 사용한다면 메모리를 많이 차지하게 되어서 프로그램이 무거워집니다