package ch09;
public class NumberPrinter {
private int id;
static int waitNumber; //대기번호
//static을 사용함으로써 waitNumber의 변수를 공유
public NumberPrinter(int id) {
this.id = id;
waitNumber = 1;
}
//번호표를 찍어 주세요.
public void printWaitNumber() {
System.out.println(id + "기기의 대기 순번 : "+ waitNumber);
waitNumber++;
}
}
package ch09;
public class MainTest1 {
public static void main(String[] args) {
System.out.println(NumberPrinter.waitNumber);
NumberPrinter numberPrinter1 = new NumberPrinter(1); //메모리에 올린 인스턴스
NumberPrinter numberPrinter2 = new NumberPrinter(2); //인스턴스들이 공유하는변수 : static
//힙영역에 n1 n2 만들어두고 stack에 main을 할당하고 힙영역의 n1 , n2에서 stack의 영영에 주소를 할당
//객체와 상관없이 미리 만들어지는 변수라 접근해서 현재값이 얼마인지 알수있게된다. - static
//static 메모리 구조가 다른곳에 존재하기때문에 태양이라고도한다. 태양은 객체생성과 상관 없이 미리 할당 되어 있다.
//태양이라는 변수에 접근하여 공유한다.
//static을 사용하지않을경우 n1 n2가 각각 독립적이지만 static을 쓰게되면 메모리에 static이라는 변수에 생성이되어 인스턴스들이 공유하는변수로 생성
//왼쪽 기계
//1.번호표를 뽑음
numberPrinter1.printWaitNumber();
//2.번호표를뽑음
numberPrinter1.printWaitNumber();
numberPrinter1.printWaitNumber();
numberPrinter2.printWaitNumber();
numberPrinter2.printWaitNumber();
numberPrinter1.printWaitNumber();
numberPrinter1.printWaitNumber();
//오른쪽 기계
numberPrinter2.printWaitNumber();
numberPrinter2.printWaitNumber();
}
}
'Java > chapter2' 카테고리의 다른 글
ch09 Company (0) | 2021.08.25 |
---|---|
ch09 Employee (0) | 2021.08.25 |
ch08 Person this란? (0) | 2021.08.25 |
ch07 Hero (0) | 2021.08.25 |
ch07 Bank (0) | 2021.08.25 |