21일차 강의 정리

* 이번강의는 기초적인것으로 모아넣었다.

다음 강의에 분리해서 자세히 볼 예정이다.


1. ArrayList / LinkedList

소스

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
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
 
public class Ex03 {
    public static void main(String[] args) {
        ArrayList list = new ArrayList(6);
//      LinkedList list = new LinkedList();    //거의 동일
        
        list.add(new Integer(1));
        System.out.println(list.size()+"개");
        list.add(2);
        System.out.println(list.size()+"개");
        list.add(3);
        System.out.println(list.size()+"개");
        list.add(4);
        list.add(new String("오"));
        list.add("육");
        
        list.remove(1);    //인덱스번호 1 번 delete
//        list.clear();    //delete All
        list.set(4new Integer(7));    //수정
        list.add(410);    //4번째 자리에 10 추가
        
        //출력방법 1
//        for (int i = 0; i < list.size(); i++) {        
//            System.out.println(list.get(i));
//        }
        //출력방법 2
        Iterator ite = list.iterator();        //iterator은 모든 컬렉션프레임워크가 사용할수있다
        while(ite.hasNext()==true){
            System.out.print(ite.next()+" ");
        }
        
    }//main end
}//class end
cs

결과


2. Vector

Data 관리 - 정보관리

배열은 정적이라면, Vector은 동적이다.

소스

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
import java.util.Enumeration;
import java.util.Iterator;
import java.util.Vector;
 
public class Ex04 {
 
    public static void main(String[] args) {
        Vector vec = new Vector();
        vec.add("abc");
        vec.add("def");
        vec.add("gji");
        
        //출력방법 1
        for (int i = 0; i < vec.size(); i++) {
            System.out.println("idx:"+i+", value:"+vec.get(i));
        }
        System.out.println("=============================");
        //출력방법 2
        Enumeration ve = vec.elements();    //vector만을위한것 (열거자~라고 명명)
        while(ve.hasMoreElements()==true){
            System.out.println(ve.nextElement());
        }
        System.out.println("=============================");
        ve = vec.elements();     //새롭게 객채를 생성하지않으면 출력이 되지않는다. 위에서 넘어가있기때문
        while(ve.hasMoreElements()==true){
            System.out.println(ve.nextElement());
        }
        //출력방법 3
//        Iterator ite = vec.iterator();        //iterator은 모든 컬렉션프레임워크가 사용할수있다 (반복자~라고 명명)
//        while(ite.hasNext()==true){
//            System.out.println(ite.next());
//        }
 
    }//main end
}//class end
cs

결과


3. Set type

순서가 없다.

동일한 값을 넣어도 중복되어 하나만 출력된다.

HashSet -  집합의 개념으로 순서x

TreeSet - 뒤이어질 Map 승계, 출력시 순서를 보장받음

소스

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
import java.util.HashSet;
import java.util.Iterator;
 
public class Ex05 {
    public static void main(String[] args) {

        HashSet set = new HashSet();
        set.add("일");
        set.add("이");
        set.add("삼");
        set.add("네엣");
        set.add("다섯");
        set.add("이");    //중복x
        set.remove("이");
 
        Iterator ite = set.iterator();
        while(ite.hasNext()){
            System.out.println(ite.next());
        }
    }//main end
}//class end
cs

결과


4. Map type

list - idx : value

map - key : value

소스

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
import java.util.HashMap;
import java.util.*;
 
public class Ex06 {
    public static void main(String[] args) {
        HashMap map = new HashMap();
        map.put(02);
        map.put("1"4);
        map.put("이""123");
        map.put("abc""abcde");
        map.put("1""abcdeffffff");
        
//        System.out.println(map.get(0));
//        System.out.println(map.get("1"));
//        System.out.println(map.get("이"));
//        System.out.println(map.get("abc"));
//        System.out.println(map.get("1"));    //키값의 중복은 허용하지않는다
        
        Set keys = map.keySet();
        Iterator ite = keys.iterator();        //key 값
        while(ite.hasNext()){
            String key = String.valueOf(ite.next());
            System.out.print(key+":");
            System.out.println(map.get(key));
        }
    }//main end
}//class end
cs

결과



21일차 강의 정리


1. 싱글톤 패턴(singleton pattern)

싱글톤패턴은 인스턴스가 사용될 때 똑같은 인스턴스를 만들어 내는 것이 아니라 

동일 인스턴스를 여러 곳에서 공유되고 사용할수 있는 것을 말한다.

싱글톤 패턴을 적용한 클래스는 단 하나의 객체만 만들어 질 수 있다.

반드시 디폴트 생성자를 구현 해야한다.

소스

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
class Am02{
    int a=1000;
    private static Am02 me;
 
    private Am02(){ // 반드시 디폴트 생성자를 구현
        System.out.println("생성자 호출");
    }
    
    public static Am02 func1(){
        if(me ==null){
            me = new Am02();    //생성자 한번만 호출
        }
        return me;
    }//func1() end
}//Am02 class end
public class Ex02 {
    public static void main(String[] args) {
        // 싱글톤패턴
        Am02 me = Am02.func1();        //me 객체생성
        Am02 me2 = Am02.func1();    //me2 객체생성
 
        me.a=me.a+100;                //me 객체의 a에+100
        System.out.println("me의 a= "+me.a);
        System.out.println("me2의 a= "+me2.a);    //me2 객체에 공유가 되서 me와 같은 결과
        
    }//main end
}//class end
cs

결과

소스2 (오버라이드!)

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
class Am03{
    Am03 me;
    int idx=1;
    public Am03(int a) {
        super();    //Object
        me = this;
        System.out.println("Am03 디폴트 생성자/a = "+a);
    }
    @Override
    public String toString() {
        System.out.println(idx);
        return ""+idx;
    }
}//Am03 class end
 
class Amm03 extends Am03{        //Am03상속
    int idx=2;
    public Amm03() {
        super(4);
        System.out.println("Amm03 디폴트 생성자");
    }
    public Amm03(int a) {
        this();
        System.out.println("Amm03 생성자/a ="+a);
    }
    public Am03 func01(){
        System.out.println("func01()");
        return super.me;        //객체출력은 toString을 출력..(오버라이드된 값 출력)
    };
    @Override
    public String toString() {        //Am03의 toString 오버라이드
        System.out.println("Amm03 idx -> "+idx);
        return ""+idx;
    }
    @Override
    public boolean equals(Object obj) {
        return idx==((Am03)obj).idx;
    }
}//Amm03 class end
 
public class Ex03 {
    public Ex03() {
        System.out.println("me create");
    }
    
    public static void main(String[] args) {
        Amm03 mm= new Amm03(7);
        System.out.println("--------------------------");
        Am03 mm2 = mm.func01();
        System.out.println("------------mm--------------");
        System.out.println("mm -> "+mm);
        System.out.println("------------mm2-------------");
        System.out.println("mm2 ->"+mm2);
        System.out.println("--------------------------");
        System.out.println(mm2.equals(mm));
    }//main end
}//class end
cs

결과2



'* Programming > JAVA' 카테고리의 다른 글

DAY22 컬렉션프레임워크 Vector  (0) 2016.08.03
DAY21 컬렉션 프레임워크  (0) 2016.08.03
DAY20 Calendar/Date/Random/Arrays Class  (0) 2016.08.02
DAY20 Object클래스,리플렉션  (0) 2016.08.02
DAY20 this/super  (0) 2016.08.02

20일차 강의 정리


1. Calendar Class

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
import java.util.Calendar;
 
public class Ex02 {
    public static void main(String[] args) {
        //캘린더
        Calendar now;
        now = Calendar.getInstance();
        
        int year = now.get(Calendar.YEAR);
        System.out.print(year+"년 ");
        int month = now.get(Calendar.MONTH);
        System.out.print(month+1+"월 ");
        int day = now.get(Calendar.DATE);
        System.out.print(day+"일 ");
 
        int week = now.get(Calendar.DAY_OF_WEEK);
        char[] weeks={'일','월','화','수','목','금','토'};
        System.out.println(weeks[week-1]+"요일");
        
        int ampm = now.get(Calendar.AM_PM);
        if(ampm==0){
            System.out.print("AM ");
        }else{
            System.out.print("PM ");
        }
        int hour = now.get(Calendar.HOUR);
        System.out.print(hour+":");
        int min = now.get(Calendar.MINUTE);
        System.out.print(min+":");
        int sec = now.get(Calendar.SECOND);
        System.out.println(sec);
        
        int hhour = now.get(Calendar.HOUR_OF_DAY);
        System.out.println(hhour+":"+min+":"+sec);
        
        int cntDay = now.get(Calendar.DAY_OF_YEAR);
        System.out.println(cntDay+"일째 입니다.");
        
        now.set(year, month, 4);
 
    }
}
cs

결과


2. Date Class

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.text.SimpleDateFormat;
import java.util.Date;
 
public class Ex03 {
    public static void main(String[] args) {
        //Date
        Date now = new Date();
        System.out.println(now);
        System.out.println(now.toString());
        System.out.println("-------------------------------");
        
        SimpleDateFormat sdf;
        sdf = new SimpleDateFormat("yyyy년 mm월 dd일 hh시 mm분 ss초");
        String kor = sdf.format(now);
        System.out.println(kor);
        System.out.println(now.getMonth());    //월 은 0부터시작해서 이번달이 7월이면 6이 출력
        System.out.println(now.getTime());
 
    }
 
}
cs

결과


3. Random Class

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.util.Random;
 
public class Ex04 {
 
    public static void main(String[] args) {
        //Random
        double ran = Math.random();    
        System.out.println(ran);
        
        Random ran2 = new Random();
        System.out.println(ran2.nextInt());        //int자료형의 표현 범위 내에서 난수발생
        System.out.println(ran2.nextLong());    //long자료형의 표현 범위 내에서 난수발생
        System.out.println(ran2.nextDouble());    //= Math.random()
        //0~9난수
        System.out.println(ran2.nextInt(10));     //0<=ran2<인자
        //1~45
        System.out.println(ran2.nextInt(45)+1);
    }
 
}
cs

결과


4. Arrays Class

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.util.Arrays;
 
public class Ex05 {
    public static void main(String[] args) {
        //Arrays
        int[] arr1 = {30,45,20,3,1,35};
        Arrays.sort(arr1);        //정렬
        for (int i = 0; i < arr1.length; i++) {
            System.out.print(arr1[i]+" ");
        }
        System.out.println();
 
        int[] arr2 = new int[10];
        Arrays.fill(arr2, 11);
        Arrays.fill(arr2, 3,5,3);         //arr2에서 자리번호 3~5까지 2로 채워넣는다
        for (int i = 0; i < arr2.length; i++) {
            System.out.print(arr2[i]+" ");
        }
    }
}
cs

결과


응용 소스

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
import java.util.Arrays;
 
public class Ex06 {
    public static void main(String[] args) {
        
        int[] lotto = {30,45,20,3,1,35};
        Arrays.sort(lotto);        //정렬
        int idx = Arrays.binarySearch(lotto, 30);
        
        System.out.println("30의 자리위치: "+idx);
        int[] arr2 = Arrays.copyOfRange(lotto, 1,3);    //복사-> 자리번호1에서 3이전까지
        System.out.println(Arrays.toString(arr2));        //복사한것 출력
        
        System.out.println("====================================");
        String[] names={"홍길동","김만수","김철수","고경아"};
        System.out.println(Arrays.toString(names));    //정렬 전
        Arrays.sort(names);        //binarySearch하기위해 필요(정렬)
        int idx2 = Arrays.binarySearch(names, "김만수");
        System.out.println("\'김만수\'의 자리 위치: "+idx2);
        System.out.println(Arrays.toString(names));    //정렬 후
        
        System.out.println("====================================");
        System.out.println("====================================");
//        String[] arr = Arrays.copyOf(names, names.length);    //복사, 몇번까지
        String[] arr = Arrays.copyOfRange(names, 1,3);        //복사 자리번호1에서 3전까지
        names[1]="바꿈";
        System.out.println(Arrays.toString(arr));
        System.out.println(Arrays.toString(names));
 
    }
}
cs

결과


'* Programming > JAVA' 카테고리의 다른 글

DAY21 컬렉션 프레임워크  (0) 2016.08.03
DAY21 싱글톤 패턴  (0) 2016.08.02
DAY20 Object클래스,리플렉션  (0) 2016.08.02
DAY20 this/super  (0) 2016.08.02
DAY19 익명클래스  (0) 2016.08.02

20일차 강의 정리


소스

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
class Pm01{//extends Object
//    public Pm01(){    //숨어있는 아가들
//        super();
//        System.out.println("pm01 클래스 생성자");
//    }
    void func01(){
        System.out.println("Pm01 class func01() call");
    }
}
 
public class Ex01 {
    public static void main(String[] args) throws Exception {
        //Object
        Object obj = new Object();
        Pm01 pm01 = new Pm01();
        
        System.out.println(pm01.toString());
        System.out.println(pm01);
        System.out.println("pm01클래스의 해시코드: "+pm01.hashCode());
        System.out.println("pm01클래스의 경로: "+pm01.getClass());
        pm01.func01();
        System.out.println("------------------------");
        
        //리플렉션
        Class info = Class.forName("com.hb.pm.Pm01");
        Object obj2 = info.newInstance();
        Pm01 pm02 = (Pm01)obj2;
        
        System.out.println(pm02.getClass());
        pm02.func01();
 
    }//main end
}//class end
cs

결과



'* Programming > JAVA' 카테고리의 다른 글

DAY21 싱글톤 패턴  (0) 2016.08.02
DAY20 Calendar/Date/Random/Arrays Class  (0) 2016.08.02
DAY20 this/super  (0) 2016.08.02
DAY19 익명클래스  (0) 2016.08.02
DAY19 내부클래스,로컬클래스  (0) 2016.08.01

20일차 강의 정리


소스

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
class Am01{        //부모 클래스
    String msg="super";
    
    void func01(){
        System.out.println("super class");
    }
}
class Am11 extends Am01{        //Am01을 상속받는 자식클래스
    String msg="this";
    
    @Override
    void func01(){
        System.out.println("this class");
    }
}
 
public class Ex01 {    
    public static void main(String[] args) {
        Am11 me = new Am11();        //this
//        Am01 me = new Am11();        //super
        
        System.out.println(new Am01().msg);    //super
        System.out.println(me.msg);
        me.func01();
        
    }//main end
}//class end
cs

결과

소스2

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
abstract class Am02 extends Object{
    String msg="super";
    public Am02(){
        super();
        System.out.println("Am02부모 class 생성자");
    }
    void func01(){
        System.out.println("부모 추상class func02()");
    }
    abstract void func02();
 
}
 
class Am22 extends Am02{
    String msg="this";
    public Am22(){
        super();
        System.out.println("Am22자식 class 생성자");
    }
    
    @Override
    void func02() {
        System.out.println("자식class 재정의 func02()");    
    }
    
}//Am22 class end
 
public class Ex02 {
    public static void main(String[] args) {
//        Am22 me = new Am22();    //msg가 this
        Am02 me = new Am22();    //msg가 super(받는게 부모라서)
        System.out.println("msg : "+me.msg);
        me.func01();
        me.func02();
    }//main end
}//class end
cs

결과2





'* Programming > JAVA' 카테고리의 다른 글

DAY20 Calendar/Date/Random/Arrays Class  (0) 2016.08.02
DAY20 Object클래스,리플렉션  (0) 2016.08.02
DAY19 익명클래스  (0) 2016.08.02
DAY19 내부클래스,로컬클래스  (0) 2016.08.01
DAY19 예외처리2  (0) 2016.08.01

+ Recent posts