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
50
51
52
53
package com.day12;
 
//내부클래스(inner)    : 클래스를 내가 만들고 싶은 곳에 만들 수 있음(ex.클래스 안, 메소드 안...)
//1.클래스 안에 클래스를 생성 가능
//단, 중괄호가 겹치면 안됨
 
class Outer1{//Outer1.class
    
    static int a= 10;
    int b= 20;
    
    //Inner를 사용하려면 Outer의 객체를 생성
    //Outer의 객체가 생성됐다고 Inner가 생성된건 아니다
    public class Inner1{//Outer1$Inner1.class
        
        int c = 30;
        
        public void write(){
            
            System.out.println(a);
            System.out.println(b);
            System.out.println(c);
            
        }
                
    }
        
    public void print(){
        
        Inner1 ob = new Inner1();
        ob.write();
        
    }
    
}
 
public class Test1 {
    
 
    public static void main(String[] args) {
 
        Outer1 out = new Outer1();        
        out.print();//1번째 방법     //Outer의 메소드를 이용하여 Inner의 메소드를 사용
        
        System.out.println("----");
        
        Outer1.Inner1 inner = out.new Inner1();//2번째 방법
        inner.write();
        
    }
 
}
cs

==Console==

<InnerClass>

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
package com.day12;
 
//내부클래스(inner)    : 클래스를 내가 만들고 싶은 곳에 만들 수 있음(ex.클래스 안, 메소드 안...)
//2.메소드 안에 클래스를 생성 가능
//단, 중괄호가 겹치면 안됨
 
class Outer2{
    
    static int a = 10;    //전역변수
    int b = 20;
    
    public void write(){
        
        int c = 30;    //지역변수
        final int d = 40;    
        
        class Local{//메소드 안에 클래스 생성 시 객체 생성은 무조건 메소드 안에서 생성 필요
            
            public void print(){
                
                System.out.println(a);
                System.out.println(b);
                System.out.println(c);
                System.out.println(d);                
                
            }            
            
        }
        
        //메소드 안에서만 객체 생성 가능
        Local ob = new Local();
        ob.print();
        
    }
        
}
 
public class Test2 {
 
    public static void main(String[] args) {
        
        Outer2 out = new Outer2();
        out.write();
 
    }
 
}
 
cs

==Console==

 

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
50
51
52
package com.day12;
 
//내부클래스(중첩)    : 클래스를 내가 만들고 싶은 곳에 만들 수 있음(ex.클래스 안, 메소드 안...)
//3. 클래스 안에 static 클래스를 생성 가능
//단, 중괄호가 겹치면 안됨
 
class Outer3{
    
    static int a = 10;
    int b = 20;
    
    public static class Inner3{
        
        int c = 30;
        
        public void write(){
            
            System.out.println(a);
            //System.out.println(b);
            System.out.println(c);
            
            Outer3 out = new Outer3();//1번째 방법 : outer를 inner 내부에서 객체를 생성하여 출력
            System.out.println(out.b);
                
        }
            
    }
    
    public void print(){
        
        Inner3 ob = new Inner3();
        ob.write();
        
    }
    
}
 
public class Test3 {
 
    public static void main(String[] args) {
        
        Outer3 out = new Outer3();//2번째 방법 : inner의 객체를 outer에 생성 후 outer를 메인절에서 객체 생성하여 출력
        out.print();
        
        //클래스 안의 클래스 생성 시 :     Outer3.Inner3 inner = out.new Inner3();
        Outer3.Inner3 inner = new Outer3.Inner3();
        inner.write();
        
    }
 
}
cs

==Console==

<익명의 annonymous,무명의 클래스>

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
package com.day12;
 
//내부클래스(inner)    : 클래스를 내가 만들고 싶은 곳에 만들 수 있음(ex.클래스 안, 메소드 안...)
//4.익명의 annonymous,무명의 클래스
//메모리 낭비가 적다(안드로이드 제작할 때 많이 사용) : 사용하고 초기화 하기 위해서 사용
//단, 중괄호가 겹치면 안됨
 
//저장되는 이름 : Test4$1.class
 
public class Test4 {
    
    public Object getTitle(){
        
        //코딩
        
        //return a;
        return new Object(){//객체의 명칭이 없이 한번 쓰고 없어지는 객체
            
            @Override
            public String toString() {
                return "익명의 클래스";
            }
                        
        };
        
    }
    
    public static void main(String[] args) {
 
        Test4 ob = new Test4();
        System.out.println(ob.getTitle());
        
    }
 
}
 
cs

==Console==

 

<Collection Framework>

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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package com.day12;
 
 
//ms의 framework : .net은 os를 실행하는데 famework를 완충지대로 os를 컨트롤하고 h/w를 컨트롤 
//웹의 framework : (strat, ibatis, mybatis, spring 등) jsp,servlet 등의 코딩을 쉽게 만들고 보수할 수 있게 하는 방법론 
 
//Collections Framework(방법론) : 데이터를 관리하는 방법론
//데이터 관리의 진화 : 변수 -> 배열 -> 클래스 -> collection framework
 
//Collections Framework의 종류
//List(Vector(동기화 o),ArrayList(동기화 x : 주로 사용)...) - interface의 일종
//Map(HashSet,HashTable,TreeSet...) - interface의 일종
 
//객체 생성 시 공간이 기본 10개가 생성
//공간 늘리기, 줄이기 가능
//중간 삽입 가능(밀어내기)
 
//List(I) - Vector(C)
//inetface는 객체 생성이 안되고 클래스를 생성하여 구현함
public class Test5{
 
    public static void main(String[] args) {
        
        Vector v = new Vector();
 
        v.add("서울");    //upcast
        v.add(30);
        v.add('c');
        //vector의 데이터 타입: objct
        
        String str;
        Integer i;
        Character c;
        
        str = (String) v.get(0);    //downcast
        System.out.println(str);
        
        i = (Integer)v.get(1);
        System.out.println(i);
        
        c = (char)v.get(2);
        System.out.println(c);
        
        Iterator it = v.iterator();
        
        while(it.hasNext()){    //데이터 유무 확인 (맨위 bof에서 대기, 데이터 아래 eof에서 종료)
            
            Object o = it.next();    //데이터의 타입을 알 수 없기 때문에 object로 호출
            
            if(o instanceof String){
                str = (String)o;
                System.out.println(str);
            }else if(o instanceof Integer){
                i = (Integer)o;
                System.out.println(i);
            }else if(o instanceof Character){
                c = (char)o;
                System.out.println(c);
                
            }
            
        }
        
    }
 
}
 
cs

==Console==

<Vector와 Iterator의 등장>

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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package com.day12;
 
 
public class Test6 {
 
    private static final String city[] = {"서울","부산","대구","인천","광주","대전","울산"};
        
    public static void main(String[] args) {
 
        Vector<String> v = new Vector<String>();    //제너릭 : vector에 String값만 넣을 수 있게 설정
        
        for(String s : city){
            v.add(s);
        }
        
        //v.add(10);
        
        String str;
        str = v.get(0);    //vecter에 string만 들어가 있기 때문에 upcast가 진행 안되어서 downcast도 진행 안함
        System.out.println(str);        
        
        str = v.firstElement();
        System.out.println(str);
        
        str = v.lastElement();
        System.out.println(str);
        
        str = v.get(1);
        System.out.println(str);
        //---------------------------------------
        for(int i=0;i<v.size();i++){    //vector는 length가 아닌 size 사용
            System.out.print(v.get(i)+" ");
        }
        System.out.println();
        //---------------------------------------
        for(String s : v){
            System.out.print(s + " ");
        }
        System.out.println();
        //---------------------------------------
        
        //vector의 고유 반복문
        //Iterator : 반복자
        
        Iterator<String> it = v.iterator();
        
        while(it.hasNext()){    //hasNext()데이터를 읽는 하이라이트바를 옮겨주는 기능
        
            str = it.next();
            
            System.out.print(str + " ");
            
        }    //Iterator set
        
        while(it.hasNext()){ //move의 개념으로 사용하기 때문에 첫번째 while문에서 it 내용을 사용하고 
                             //더이상 데이터가 없기 때문에 호출 불가(데이터 없음)
            
            str = it.next();
            
            System.out.print(str + " ");
            
        }
        
        
    }
 
}
 
cs

==Console==

 

<Generic>

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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
package com.day12;
 
 
public class Test7 {
    
    private static final String city[] = {"서울","부산","대구","인천","광주","대전","울산"};
 
    public static void main(String[] args) {
 
        //제너릭(generic)
        Vector<String> v = new Vector<String>();
        
        String str;
        
        System.out.println("벡터의 초기 용량 : " + v.capacity());    //vector의 초기 용량은 10개
 
        for(String c : city){
            
            v.add(c);
            
        }
        
        Iterator<String> it = v.iterator();
        
        while(it.hasNext()){
            
            str = it.next();
            System.out.print(str + " ");
            
        }
        
        System.out.println();
        
        //데이터 변경(수정)
        v.set(0"Seoul");
        v.set(1"Busan");
        
        for(String s:v){
            System.out.print(s + " ");
        }
        System.out.println();
        
        //----------------------------------------
        
        //삽입(끼워넣기)
        v.insertElementAt("대한민국"0);
        
        for(String s:v){
            System.out.print(s + " ");
        }
        System.out.println();
        
        //----------------------------------------
        //검색
        
        int index = v.indexOf("대구");
        if(index != -1){
            System.out.println("검색 성공!" + index);
            System.out.println(v.get(index));
        }else{
            System.out.println("검색 실패!" + index);
        }
        
        //----------------------------------------
        
        //오름차순 정렬(1~10,a~z,ㄱ~ㅎ)
        Collections.sort(v);
        
        for(String s:v){
            System.out.print(s + " ");
        }
        System.out.println();
        
        //----------------------------------------
        
        //내림차순 정렬(10~1,z~a,ㅎ~ㄱ)
                                        //정렬 방법
                
        for(String s:v){
            System.out.print(s + " ");
        }
        System.out.println();
        
        //----------------------------------------
        
        //삭제
        v.remove("Busan"); //v.remove(7);
        
        for(String s:v){
            System.out.print(s + " ");
        }
        System.out.println();
        
        //----------------------------------------
        System.out.println("벡터의 초기 용량 : " + v.capacity());
        //----------------------------------------
        
        //용량 증가
        
        for(int i=1;i<=20;i++){
            
            v.add(Integer.toString(i));
            
        }
        
        for(String s:v){
            System.out.print(s + " ");
        }
        System.out.println();
        
        System.out.println("벡터의 용량 : " + v.capacity());
 
        //----------------------------------------
 
        //특정 범위 삭제
        //v.removeRange(5,20) //5~20번째까지 삭제(현재 없어짐(jdk7.0)까지 가능함)
        
        for(int i = 1;i<=10; i++){
            v.remove(5);
        }
        
        for(String s:v){
            System.out.print(s + " ");
        }
        System.out.println();
 
        System.out.println("벡터의 용량 : " + v.capacity());
 
        //----------------------------------------
        
        //빈공간 삭제
        
        v.trimToSize();
        
        System.out.println("벡터의 용량 : " + v.capacity());
        
        //----------------------------------------
        
        //모든 데이터 지우기
        
        v.clear();
        System.out.println("데이터 갯수 : " + v.size());
        System.out.println("벡터의 용량 : " + v.capacity());
        
        v.trimToSize();
        System.out.println("데이터 갯수 : " + v.size());
        System.out.println("벡터의 용량 : " + v.capacity());
        
    }
 
}
cs

==Console==

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
package com.day12;
 
 
class Test{
    
    String name;
    int age;    
    
}
 
public class Test8 {
 
    public static void main(String[] args) {
        
        Vector<Test> v = new Vector<Test>();
        
        Test ob;
        
        ob = new Test();
        
        ob.name = "배수지";
        ob.age = 25;
        
        v.add(ob);    //ob의 주소를 복사해서 첫번째 공간에 들어감
        
        //-------------------------------------------------------
        
        ob = new Test();    //기존 ob의 주소를 단절, 새로운 주소와 연결
        
        ob.name = "박신혜";
        ob.age = 27;
        
        v.add(ob);    //ob의 주소를 복사해서 두번째 공간에 들어감
        
        for(Test t : v)
            System.out.println(t.name + " : " + t.age);
 
    }
 
}
 
cs

==Console==

+ Recent posts