정적멤버란는 클래스에 고정된 필드와 메소드를 말한다. 정적필드, 정적메소드라 하는데 객체를 생성하지 않고 클래스로 바로 접근해서 사용이 가능하다.
int vI01 에는 10값을 주고 ++을 추가했다. int vI02는 20을 주고 static을 붙였는데 여기서 차이가 발생한다. vI01은 여러개의 객체를 생성해도 11이 동일하게 생성되는데 static을 붙이면 객체 생성 시마다 21, 22, 23으로 ++ 값이 계속 누적된다.
class StaticEx01 {
int vI01=10;
//static 적용
static int vI02=20;
void mSum(){
vI01++;
vI02++;
}
void mPrint(){
System.out.println("vI01++ 값의 변화 : " + vI01);
System.out.println("vI02++ 값의 변화 : " + vI02);
System.out.println();
}
public static void main(String[] args) {
StaticEx01 obj1 =new StaticEx01();
StaticEx01 obj2 =new StaticEx01();
StaticEx01 obj3 =new StaticEx01();
obj1.mSum(); obj1.mPrint(); //결과 11,21
obj2.mSum(); obj2.mPrint(); //결과 11,22
obj3.mSum(); obj3.mPrint(); //결과 11,23
}
}
정적 초기화블록은 초기화 시 사용하는데 생성자보다 우선한다는 특징이 있다.
Static{ } 형식으로 사용한다.
class StaticEx02 {
// static 블럭은 생성자 보다 우선한다는 것을 확인할 수 있는 예제
StaticEx02(){
System.out.println("생성자 확인");
}
static{
System.out.println("static 블럭 확인");
}
public static void main(String[] args) {
StaticEx02 obj =new StaticEx02();
}
}
<결과>
static 블럭 확인
생성자 확인
생성자가 더 상위에 있는데도 static이 먼저 읽힘을 알 수 있다.
<관련글보기>
'문돌이의 IT > 자바(Java)' 카테고리의 다른 글
자바(Java) final의 사용방법 (0) | 2016.03.15 |
---|---|
자바(Java) 싱글톤 Singleton (0) | 2016.03.14 |
자바(Java) instanceof, getClass 활용예제 (0) | 2016.03.12 |
자바(Java) instanceof 사용방법 (0) | 2016.03.11 |
자바(Java) getClass 메소드 사용방법 (0) | 2016.03.10 |