package ch08_static;
public class ExStatic {
// 외부에서 접근이 허용하고 모든 class에서 사용가능하게 데이터를 만드려면 public static을 붙여야한다.
public static int staValue;
private int priValue;
// 생성자 보다 우선으로 출력됌.
// 해당 클래스가 로드되는 순간 1번 가장 먼저 작동.
// static member 의 초기화.
static {
System.out.println("- static area -");
staValue = 0;
// priValue = 0; → 생성자가 작동하기 전이라 Error !
}
public ExStatic() {
++staValue;
++priValue;
System.out.println("staValue : " + staValue + " - priValue : " + priValue);
}
public static void staticMethod() {
System.out.println("- staticMethod() -");
System.out.println("staValue : " + staValue);
// System.out.println("priValue : " + priValue); static 선언된 변수만 가능
int a = 0;
}
public void info() {
System.out.println("staValue : " + staValue);
System.out.println("priValue : " + priValue);
}
}
package ch08_static;
/*
* static
* → class 에서 공통으로 사용되는 멤버.
*/
public class StaticTest {
public static void main(String[] args) {
// 객체생성이라 상관없이 static area라 사용가능.
ExStatic.staValue = 0;
ExStatic.staticMethod();
// static : 공용 → 다른 버퍼에 저장되어 관리됌.
// ex1 객체에서 1더하고 ex2 객체에서 1 더해서 총 2.
ExStatic ex1 = new ExStatic();
ExStatic ex2 = new ExStatic();
System.out.println();
ExStatic.staValue = 7;
ex1.staValue = 10;
ex1.info();
ex2.staValue = 12;
ex2.info();
}
}