(이것이 자바다p.237)
static
클래스 멤버(O)
인스턴스 멤버(X)
객체마다 가지고있을 필요없는 공용적인 데이터는 정적 필드로 선언하는 것이 편리
정적인 멤버는 원칙적으로 클래스 이름으로 접근해야하지만 객체참조 변수로도 접근 가능 (이클립스에선 경고표시 뜬다.)
정적 초기화 블록
정적 필드는 선언과 동시에 초기화하는 것이 일반적
그러나 계산이 필요한 초기화작업은 식이 필요하다. 인스턴스 필드는 생성자에서 초기화가 가능하지만 정적 필드는 객체 생성 없이 사용해야하므로 생성자에서 초기화 불가능
정적 블록(static block)
static {
...
}
클래스 내부에 여러개 선언되어도 상관없으며 메모리에 할당될 때 선언된 순서대로 실행된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | package study01; public class StaticExam { int field1; void method1() {} //정적 필드, 정적 메서드 선언 static int field2; static void method2() {} //정적 블록 static { field1 =10;//(X) method1();//(X) field2 = 10; method2(); } //정적 메소드, 정적 블록 안에선 this(현재 인스턴스) 못쓴다. static void method3() { field1 =10;//(X) method1();//(X) field2 = 10; method2(); } } | cs |
'Java > study' 카테고리의 다른 글
예외 처리 (0) | 2019.04.11 |
---|---|
Calendar class의 객체는 싱글톤일까? (0) | 2019.04.10 |
추상 클래스 / 추상 메서드 (0) | 2019.04.09 |
Getter Setter 단축키 (0) | 2019.04.09 |
타입변환과 다형성 (0) | 2019.04.09 |