프로세스가 메모리에 로드되는 순간 정적변수 영역(데이터 영역)에 고정적으로 할당되어, 프로그램이 종료될 때 해제되는 변수이다.
static을 이해하기 위해서는 메모리 static 영역의 이해가 필요하다.
public static final [변수]
예를 들어 클래스를 생성하는 경우 100명의 Person 객체를 생성한다면
Mveloper를 같은 값을 갖는 메모리가 100개 중복 생성되는 것이다.
public class Person {
private String name = "Mveloper";
public void printName() {
System.out.println(this.name);
}
}
static메서드에서는 인스턴스 변수를 사용할 수 없습니다.
정적 변수이므로 객체에서는 호출이 불가하다 따라서 static 변수에 접근하기 위한 메소드는 반드시 static 메소드가 되어야 한다
Static 변수는 클래스 변수이다.
상수만 모아서 사용하며 상수의 변수명은 대문자와 _ 를 조합하여 네이밍을 만듭니다
또한 상속을 방지하기 위해 class에 final을 붙여줍니다
public final class AppConstants{
public static final String APP_NAME = "MyApp";
public static final String PREF_NAME = "MyPref";
}
정적 팩토리 메서드 패턴을 사용할 때 많이 사용한다
Static Method는 객체의 생성 없이 호출이 가능하지만 지양하고 있다
이유는 Static Method를 사용하기 위해서는 참조하는 변수도 모두 Static 메모리에 올라간 변수여야 한다.
이럴 때 많은 변수가 static으로 할당되는데
참고