참조변수를 추가로 생성해 Stack를 두 가지로 분할
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | public class Filo { public static void main(String[] arvs) { Init init1 = new Init(); Init init2 = new Init(); init1.push(100); System.out.print("init1.push1: " + 100 + "\t"); init1.push(200); System.out.print("init1.push2: " + 200 + "\t"); init1.push(300); System.out.println("init1.push3: " + 300 + "\n"); init2.push(900); System.out.print("init2.push1: " + 900 + "\t"); init2.push(800); System.out.print("init2.push2: " + 800 + "\t"); init2.push(700); System.out.println("init2.push3: " + 700 + "\n"); System.out.println(" init1.pop1 : " + init1.pop()); System.out.println(" init1.pop2 : " + init1.pop()); System.out.println(" init1.pop3 : " + init1.pop() + "\n"); System.out.println(" init2.pop1 : " + init2.pop()); System.out.println(" init2.pop2 : " + init2.pop()); System.out.println(" init2.pop3 : " + init2.pop()); } } class Init { static int[] array = new int[3]; static int tos; Init() { } int pop() { if (tos <= 0) tos = 0; return array[tos--]; } void push(int num) { array[tos] = num; tos++; if (tos >= 2) tos = 2; } } |
이런 출력결과가 나타났다 위의 소스에서 변수의 제어자 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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | public class Filo { public static void main(String[] arvs) { Init init1 = new Init(); Init init2 = new Init(); init1.push(100); System.out.print("init1.push1: " + 100 + "\t"); init1.push(200); System.out.print("init1.push2: " + 200 + "\t"); init1.push(300); System.out.println("init1.push3: " + 300 + "\n"); init2.push(900); System.out.print("init2.push1: " + 900 + "\t"); init2.push(800); System.out.print("init2.push2: " + 800 + "\t"); init2.push(700); System.out.println("init2.push3: " + 700 + "\n"); System.out.println(" init1.pop1 : " + init1.pop()); System.out.println(" init1.pop2 : " + init1.pop()); System.out.println(" init1.pop3 : " + init1.pop() + "\n"); System.out.println(" init2.pop1 : " + init2.pop()); System.out.println(" init2.pop2 : " + init2.pop()); System.out.println(" init2.pop3 : " + init2.pop()); } } class Init { int[] array = new int[3]; int tos; Init() { } int pop() { if (tos <= 0) tos = 0; return array[tos--]; } void push(int num) { array[tos] = num; tos++; if (tos >= 2) tos = 2; } } |
항상 제어자 씀에 있어 조심해야할 것 같다.
'Study > JAVA' 카테고리의 다른 글
추상클래스 Vs 인터페이스 (0) | 2014.10.13 |
---|---|
Equals 메서드 (0) | 2014.10.13 |
java FILO(1) (0) | 2014.10.13 |
Scanner 함수를 이용한 대소문자 변환 소스 (0) | 2014.10.13 |
인터페이스를 이용한 다중상속 (0) | 2014.10.10 |