2019.01.07 문자열위치, 문자위치,StringBuffer, StringBuilder,Wrapper클래스,Math,Random 클래스,Date , Calendar 클래스,컬렉션 프레임워크

2019. 1. 7. 16:04JAVA


#1 API 문자열 위치, 문자위치

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
     /* 문자열 위치 */
        System.out.println(str.indexOf("Pro")); // 문자열의 첫문자 위치 → 5 ,없는 문자열일 경우 -1
        
        /* 문자 위치*/
        System.out.println(str.indexOf('a')); // 특정문자 위치 → 1 , 문자가 중복될 경우 가장 처음으로 나오는 문자위치를 출력
        System.out.println(str.lastIndexOf('a')); // 마지막위치에서 부터 문자열을 찾아 나감 → 10
        
        /* 공백을 구분자로 사용 */
        String[] strArray=str.split(" ");
        for(String s :strArray) {
            System.out.println(s);
        } 
        // 주민 번호 남녀 구분 1,3남자 2,4여자
        /*방법1*/
        String jumin = "951221-4234567";
        if(jumin.charAt(7== '3' || jumin.charAt(7== '1') {
            System.out.println(" 남자 ");
        }else if(jumin.charAt(7== '2' || jumin.charAt(7== '4') {
            System.out.println("여자");
        }else {
            System.out.println("잘못된 정보");
        }
        /*방법2*/
        String s =jumin.substring(78);
        if(s.equals("1")||s.equals("3")) {
            System.out.println(" 남자 ");
        }else if(s.equals("2")|| s.equals("4")) {
            System.out.println("여자");
        }else {
            System.out.println("잘못된 정보");
        }
        /*양 끝단의 공백 제거*/
        String name = " 홍길동  ";
        name = name.trim(); //공백 제게
        System.out.println(name);
cs





#2 StringBuffer, StringBuilder 클래스

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.example;
 
import java.util.StringTokenizer;
 
/*StringBuffer,StringBuilder 클래스
  : 가변크기의 버퍼를 가지고 있다.
  : 자기 자신의 값을 바로 수정 가능
  */
public class Test1 {
 
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
 
        sb.append("JAVA"); // 문자열 끝에 매개값을 추가
        System.out.println(sb.toString());
        sb.append(" Programming");
        System.out.println(sb);
 
        sb.replace(04"JSP"); // 매개값3개 ,문자열의 일부분을 다른부분으로 대치
        System.out.println(sb);
 
        sb.insert(3","); // 문자열 중간에 주어진 매개값을 추가
        System.out.println(sb);
 
        sb.reverse(); // 문자열을 반대로 출력
        System.out.println(sb);
        sb.reverse();
        System.out.println(sb);
 
        /* 자기 자신이 변경되기 때문에 연속적으로 수정이 가능 → 메소드 체이닝 */
        sb.append("HTML").append(" CSS").append(" Javascript").reverse();
        System.out.println(sb);
        System.out.println("_________________________________________________");
 
        /* StringToKenizer 클래스 : 문자열을 분리하기 위해 사용 → String 클래스의 split()와 동일한 기능 */
        StringTokenizer st = new StringTokenizer("사과#배#감#포도""#"); // 토큰: 구분자를 기준으로 문자열을 각각 분리
        System.out.println(st.countTokens()); // 해당 구분자를 기준으로 토큰의 갯수 ▶4
        while (st.hasMoreTokens()) {// 토큰이 더 있을때
            System.out.println(st.nextToken());// 다음 순서의 토큰을 꺼낸다.(리턴된다→ 리턴된 값은 내부에서 삭제된다.)
        }
        System.out.println(st.countTokens()); // 토큰이 전부 꺼내어졌으므로 0 ,토큰이 전부 사용했을때 재사용이 불가 , 새로운 객체를 다시 생성하여야한다.
 
        System.out.println("_________________________________________________");
        /* 문자열 떼어내기 */
        String query = "name=gildong&address=busan&age=19";
        StringTokenizer st2 = new StringTokenizer(query, "&="); // &,=를 구분자를 사용하여 토큰 생성
        System.out.println(st2.countTokens());
        while (st2.hasMoreTokens()) {
            System.out.println(st2.nextToken());
        }
    }// main()
}
 
cs



#3 Wrapper 클래스

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
package com.example;
/*Wrapper(포장) 클래스*/
 
public class Test2 {
    public static void main(String[] args) {
        /*Wrapper(포장) 클래스*/
        System.out.println(Integer.MAX_VALUE); // 기본자료형  int의 최대 정수범위
        System.out.println(Integer.MIN_VALUE); // 기본자료형  int의 최소 정수범위
    
        Integer i1 = new Integer(10); 
        Integer i2 = new Integer("20");
        Integer i3 = Integer.valueOf(30);
        
        /*기본형 <-> Integer형*/
        // 문자열 -> 기본형으로 바꾸기 
        int a = Integer.parseInt("40");
        // 문자열 -> Integer형으로 바꾸기 
        Integer i4 = Integer.valueOf("30"); //valueOf : 객체형으로 변환
        // Integer 형을 기본형(int)으로 바꾸기
        int b = i4.intValue();
        
        int c = i1.intValue()+ i2.intValue();
        
        /* Boxing 과 Unboxing*/
        Integer  n1 = Integer.valueOf(200);// 박싱:기본형->Wrapper 클래스형 으로 변환
        n1.intValue();// 언박싱 : Wrapper 클래스형 -> 기본형으로 변환
        // JDK 1.5버전부터 자동박싱,자동언박싱이 가능해졌다.
        Integer n2 = 200// 자동박싱 : 자동으로 Integer  n2 = Integer.valueOf(200);과정을 진행해줌
        int e = n2; //자동 언박싱 : 자동으로  n2.intValue(); 과정을 진행해줌.
        
        //Example
        Float f1 = Float.valueOf(23.3f); // 박싱 
        Float f2 = 3.14f; //자동박싱
        
        float f3 = f1.floatValue(); // 언박싱
        float f4 = f2; //자동 언박싱
        
        /* int -> String 변환 */
        String str = String.valueOf(20);
        str = Integer.toString(30);
        str = 40 + " ";
    }//main()
 
}
 
cs


#4 Math,Random 클래스

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
package com.example;
 
import java.util.Random;
 
/* Math, Random 클래스*/
public class Test3 {
 
    public static void main(String[] args) {
    /* Random 클래스
       : 임의의 값을 생성해주는 클래스*/
        Random random = new Random();
        System.out.println(random.nextInt(100));// 0~99까지 랜덤
        System.out.println(random.nextFloat()); // 0~99까지의 float 범위 내의 실수
        System.out.println(random.nextBoolean()); // true ,false 중에 하나 
        
    /* Math 클래스
       : 수학관련, 모든 구성요소가 static 필드와 메소드 
       : 객체를 만들어서 사용하지 않는다. */
        System.out.println(Math.PI);
        System.out.println(Math.min(1020)); //둘 중 작은 값
        System.out.println(Math.pow(10,2)); // a^b
        System.out.println(Math.round(3.27)); // 소수점 첫째자리에서 반올림
        System.out.println(Math.ceil(3.21)); // 소수점 첫째짜리에서 무조건 올림
        System.out.println(Math.floor(3.83)); // 소수점 첫째자리에서 무조건 내림 
        System.out.println(Math.abs(-23)); // 절대값
    }// main()
 
}
 
cs


#5 Date , Calendar 클래스

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
package com.example;
 
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
 
/* Date , Calendar 클래스 */
public class Test4 {
    public static void main(String[] args) {
        /*Date 클래스*/
        Date date = new Date(); 
        System.out.println(date);
        // SimpleDateFormat 클래스
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String str = sdf.format(date);
        System.out.println(str);
        
        /*Calender 클래스 → 추상클래스*/
        Calendar cal = Calendar.getInstance();
        System.out.println(cal.get(Calendar.YEAR)); //2019
        System.out.println(cal.get(Calendar.MONTH)); // MONTH는 0~11이다.
        System.out.println((cal.get(Calendar.MONTH))+1+"월");
        System.out.println(cal.get(Calendar.DATE));
        System.out.println(cal.get(Calendar.HOUR));//0~11
        System.out.println(cal.get(Calendar.HOUR_OF_DAY));//0~24
        System.out.println(cal.get(Calendar.MINUTE));
        System.out.println(cal.get(Calendar.SECOND));
        System.out.println(cal.get(Calendar.DAY_OF_WEEK)); // 요일 일요일(1)~토요일(7)
        int day = cal.get(Calendar.DAY_OF_WEEK);
        switch(day) {
            case 1System.out.println("일"); break;
            case 2System.out.println("월"); break;
            case 3System.out.println("화"); break;
            case 4System.out.println("수"); break;
            case 5System.out.println("목"); break;
            case 6System.out.println("금"); break;
            case 7System.out.println("토"); break;
        }
        
    }// main()
 
}
 
cs


#6 컬렉션 프레임워크: Set

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
package com.example;
 
import java.util.HashSet;
import java.util.Set;
 
/* 컬렉션 프레임워크 */
public class Test5 {
    public static void main(String[] args) {
        // Set(집합)-> HashSet : 순서없는 공간 , 중복저장 불가
        // 방법 1
        Set set = new HashSet(); //업캐스팅
        set.add("하나");
        set.add(1); //AutoBoxing이 일어남 -> Integer.valueOf(1);
        set.add(2.312);
        set.add('삼');
        set.add('삼'); // 중복저장 불가 ->하나만 출력
        System.out.println(set); //set.toString();
        System.out.println(set.size());// 갯수
        set.remove("하나"); // 요소 삭제
        if(set.contains("하나")) { //"하나" 가 있는지 ture&false
            System.out.println("하나 요소가 있음");
        }
        if(set.isEmpty()) {
            System.out.println("요소가 없음");
        }
        //방법2 : 최근사용법
        Set<String> set2 = new HashSet<>();//모든 요소를 String타입으로 저장, Generic Type parameter
        set2.add("하나삼"); // String으로 지정했기때문에 같은 타입만 올 수 있다.
        
        // List(목록)-> ArrayLsit, Vector : 순서있는 저장공간 , 중복저장 가능,
        
        // Map(사전식)-> HashMap, Hashtable : (키 ,값) 쌍으로 저장 , 키를 이용해서 값을 얻는 자료 구조
        
        /* <배열과 컬렉션의 차이>  
             1) 배열: 고정크기 이상의 데이터를 관리를 할 수 없다.
                     배열의 중간요소가 삭제되면 애플리케이션에서 직접 옮겨야 된다.
             2) 컬렉션 : 가변크기, 객체의 개수가 염려할 필요가 없음
                        컬렉션 내의 객체가 삭제되면 자동으로 자리를 옮겨준다. 
                        객체만 관리가 가능함. */
        
    
    }//main()
 
}
 
cs



#7 컬렉션 프레임워크 : List

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
package com.example;
 
 
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
class Person{
    private String id;
    private String passwd;
    private String name;
    public Person(){}
    
    Person(String id, String passwd, String name) {
        super();
        this.id = id;
        this.passwd = passwd;
        this.name = name;
    }
 
    
    String getId() {
        return id;
    }
 
    
    void setId(String id) {
        this.id = id;
    }
 
    
    String getPasswd() {
        return passwd;
    }
 
        void setPasswd(String passwd) {
        this.passwd = passwd;
    }
 
    
    String getName() {
        return name;
    }
 
    
    void setName(String name) {
        this.name = name;
    }
    @Override
    public String toString() {
        StringBuilder builder = new StringBuilder();
        builder.append("person [id=").append(id).append(", passwd=").append(passwd).append(", name=").append(name)
                .append("]");
        return builder.toString();
    }
    
    
    
}
 
/* 컬렉션 프레임워크 */
public class Test6 {
 
    public static void main(String[] args) {
        
        // List(목록)-> ArrayLsit, Vector : 순서있는 저장공간 , 중복저장 가능,
        // List 인터페이스 : 가변 크기 배열
        // ArrayList 클래스 : 스레드 동기화를 지원  X, 스레드에 안전X
        // Vector  클래스  : 스레드 동기화를 지원 , 스레드에 안전
        
        List<String> list = new ArrayList<String>();
        list.add("홍길동");
        list.add("이몽룡");
        list.add("이순신");
        list.add("성춘향");
        list.add("");
        System.out.println(list);
        
        for(int i=0; i<list.size(); i++) {
            System.out.println(list.get(i));
        }
        
        list.add(2"신사임당");
        for(String s:list) { // Generic Type parameter가 적용된 컬렉션은 for-each문 적용가능
            System.out.println(s);
        }
        
        List<Integer> list2 = new ArrayList<>();
        list2.add(20);
        list2.add(30);
        list2.add(40);
        list2.add(50);
        //삭제
        list2.remove(0); //remove(index) ,0위치 요소 삭제
        
        for(int i=0; i<list2.size(); i++) {
            System.out.println(list2.get(i));
        }
        //수정
        list2.set(12000);
        ///////////////예제 //////////////
        List<Person> personList = new ArrayList<Person>();
        Person person = new Person("aaa","1234","홍길동");
        personList.add(person);
        
        person = new Person("bbb","6789","성춘향");
        personList.add(person);
        
        person = new Person("ccc","1123","이순신");
        personList.add(person);
        
        for(int i=0; i<personList.size(); i++) {
            Person p = personList.get(i);
            System.out.println(p);
        }
        System.out.println("======================================");
        // 반복자를 사용해서 요소 접근
        Iterator<Person> iter = personList.iterator();
        while(iter.hasNext()) {
            Person p = iter.next();
            System.out.println(p);
        }
        System.out.println("======================================");
        for(Person p : personList) {
            System.out.println(p);
        }
    }
    
}
 
cs