클래스명.static필드
클래스명.static메소드(인수, ….)
static 멤버도 멤버이기 때문에 객체를 통해 접근 가능
객체명. static필드
객체명.static메소드(인수, …)
바람직하지 못한 사용
이클립스에서 경고 표시
(1) 객체들 간의 공유 멤버로 활용
(2) 전역 변수와 전역 함수 만들 때 사용
static int staticVar;
: static 필드
static void staticMethod() {
}
: static 메소드
static { }
클래스가 메소드 영역(static 영역)으로 로딩될 때 자동으로 실행되는 블록
클래스 내부에 여러 개가 선언되면 선언된 순서대로 실행
static 필드의 복잡한 초기화 작업과 static 메소드 호출 가능
static 블록 내부에 인스턴스 필드나 인스턴스 메소드 사용 불가
객체 자신을 참조하는 this 사용 불가
static 메소드와 static 블록에서 인스턴스 멤버를 사용하고 싶다면 객체를 먼저 생성하고 참조 변수로 접근
외부에서 new 연산자로 생성자를 호출할 수 없도록 private
접근 제한자를 생성자 앞에 붙임
클래스 자신의 타입으로 static
필드 선언
자신의 객체를 생성해서 초기화
private
접근 제한자를 붙여 외부에서 필드 값 변경 불가하도록
외부에서 호출할 수 있는 static
메소드인 getInstance()
메소드 선언
static
필드에서 참조하고 있는 자신의 객체 리턴
final
필드 (인스턴스 레벨에서의 상수)static final int MAX_SUBJECT_SCORE = 100;
final int PI = 3.14;
final int PRICE = 1000;