Chapter 7. Useful Classes I
1. Calendar & Date
- 날짜와 시간에 관련된 Data를 쉽게 처리할 수 있도록 구현된 Class
- 간단한 날짜처리는 Date를 사용하는 것이 좋으며 반드시 사용해야하는 경우도 있어 Calendar와 Date 간의 변환 방법을 알아야 한다.
- Calendar & Date Convert
· Calendar → Date
1 2 | Calendar cal = Calendar.getInstance(); Date d = new Date(cal.getTimeInMilleis()); | cs |
· Date → Calendar
1 2 3 | Date d = new Date(); Calendar cal = Calendar.getInstance(); cal.setTime(d); | cs |
- Calendar Constant
· Calendar.YEAR : Instance의 년도
· Calendar.MONTH : Instance의 월-1
· Calendar.WEEK_OF_YEAR : Instance의 해의 주차
· Calendar.WEEK_OF_MONTH : Instance의 달의 주차
· Calendar.DAY_OF_MONTH : Instance의 월의 일차
· Calendar.DATE : Instance의 월의 일차
· Calendar.DAY_OF_WEEK : Instance의 요일(일요일부터 시작)
· Calendar.DAY_OF_WEEK_IN_MONTH : Instance의 월의 몇 째 요일
· Calendar.AM_PM : Instance의 오전 오후 표시(0 : 오전 / 1 : 오후)
· Calendar.HOUR : Instance의 현재 시 – 1(1 ~ 12)
· Calendar.HOUR_OF_DAY : Instance의 시 – 1 (1~24) · Calendar.MINUTE : Instance의 분(0 ~ 59)
· Calendar.SECOND : Instance의 초(0 ~ 59)
· Calendar.MILLISECOND : 1/1000초
· Calendar.ZONE_OFFSET : 현재 지역의 Time Zone
- Calendar의 상속 Class
· GregorianCalendar
◦ 전세계 공통으로 사용하고 있는 그레고리력에 맞게 구현한 Class
◦ 태국을 제외한 나머지 국가에서 사용하는 Class
· BuddhistCalendar
◦ 태국의 시간대에 맞춰 구현한 Class
- Method
· getInstance()
1 | Calendar cal = Calendar.getInstacne(); | cs |
◦ Calendar Class를 구현한 Class의 Instace를 반환한다.
◦ System의 국가와 지역설정을 확인해 GregorianCalendar() 또는 BuddhistCalendar()를 반환
◦ 이 함수를 이용해 초기화 후 별도로 시간을 지정하지 않으면 현재 시간으로 초기화 된다.
· set()
1 2 | Calendar cal = Calendar.getInstacne(); cal.set(2015, 8, 1); | cs |
◦ Calendar Instance의 값을 매개변수에 따라 설정
◦ 매개변수 별 Method
1 2 3 4 | void set(int field, int value) void set(int year, int month, int date) void set(int year, int month, int date, int hourOfDay, int minute) void set(int year, int month, int date, int hourOfDay, int minute, int second) | cs |
· getTimeInMillis()
1 2 3 | Calendar cal = Calendar.getInstacne(); cal.set(2015, 8, 1); System.out.println(cal.getTimeInMillis()); | cs |
◦ 1/1000초 단위로 값을 반환
· add()
1 2 3 | Calendar cal = Calendar.getInstacne(); cal.set(2015, 8, 1); cal.add(Calendar.DATE,1) | cs |
◦ 매개변수에 지정한 Field의 값을 원하는 만큼 증가 또는 감소시킨다.
◦ 다른 Field에 영향을 주기 때문에 일을 바꾸게 됐을 시 월이 바뀔 수 있다.
· roll()
1 2 3 | Calendar cal = Calendar.getInstacne(); cal.set(2015, 8, 1); cal.roll(Calendar.DATE,1) | cs |
◦ 매개변수에 지정한 Field의 값을 원하는 만큼 증가 또는 감소시킨다.
◦ 다른 Field에 영향을 주지 않기 때문에 일을 바꾸게 됐을 시 월이 바뀌는 않는다.
2. Random
- Math.random과 같이 난수를 얻을 수 있는 Class로 Math.random보다 추가적인 기능이 많이 있다.
- 특징
· Math.randaom과는 다르게 Seed 값을 설정할 수 있으며 같은 Seed 값을 가진 Random Instance들은 항상 같은 난수를 같은 순서로 반환한다.
· 생성자 Random()
1 2 3 | public Random() { this(System.currentTimeMillis()); } | cs |
◦ Seed 값을 System.currentTimeMillis()로 하기 때문에 실행할 때마다 얻는 난수가 달라진다.
3. Regular Expression(정규식) - Pattern. Match
- Text Data 중에서 원하는 조건(Pattern)과 일치하는 문자열을 찾아 내기위해 사용하는 것
- 미리 정의된 기호와 문자를 이용해 작성한 문자열
- 정규식을 이용하면 많은 양의 Text File중에서 원하는 Data를 손쉽게 뽑아낼수 있고 입력된 Data가 형식에 맞는지 확인할 수 있다.
- 정규식 기본 비교 단계
1 2 3 4 | Pattern p = Pattern.compile(“c[a-z]*”); Matcher m = p.matcher(data[i]); if(m.matches()) ...... | cs |
· 정규식을 매개변수로 Pattern Class의 static Method인 Pattern compile(String regex)을 호출하여 Pattern Instance를 얻는다.
· 정규식으로 비교할 대상을 매개변수로 Pattern Class의 Matcher matcher(CharSequence input)를 호출해 Matcher Instance를 얻는다.
· Matcher Instance에 boolean match()를 호출해 정규식과 일치(부합)하는지 확인한다.
- 정규식 Pattern
Pattern | Explain |
a[a-z]* | a로 시작하는 영단어 |
a[a-z] | a로 시작하는 두 자리 영단어 |
a[a-zA-Z] | a로 시작하는 두 자리 영단어(대소문자 구분 안함) |
a[a-zA-Z0-9] a\w | a로 시작하고 숫자와 영어로 조합된 두 글자 |
.* | 모든 문자열 |
a. | a로 시작하는 두 자리 |
a.* | a로 시작하는 모든 문자열(기호포함) |
a\. | a.과 일치하는 문자열로 ’.‘은 Pattern 작성에 사용되는 문자로 escape 문자인 ’\’를 사용해야 함 |
a\d | a와 숫자로 구성된 두 자리 문자열 |
a.*e | a로 시작하고 e로 끝 나는 모든 문자열 |
[a|b].* | a 또는 b로 시작하는 문자열 |
[^b|c].* | a 또는 b로 시작하지 않는 문자열 |
.*a.* | a를 포함하는 모든 문자열(* : 0 또는 그 이상의 문자 |
.*a.+ | a를 포함하는 문자열(+ : 1 또는 그 이상의 문자로 반드시 하나 이상의 문자가 있어야 한다.) |
[^c|b].{2} | a 또는 b로 시작하는 세자리 문자열 |
0\\d{1,2} | 0으로 시작하는 최소 2자리 최대 3자리 숫자(0포함) |
최소 3자리 최대 4자리의 숫자 | |
4자리의 숫자 |
4. Scanner
- C 언어의 scanf와 유사하게 입력 Source로부터 문자 Data를 읽어오는 목적으로 추가된 Class
- 특징
· 정규식 표현
1 2 | Scanner useDelimiter(Pattern pattern) Scanner useDelimiter(String pattern) | cs |
◦ 정규식 표현을 이용해 Line 단위의 검색을 지원하며 구분자에도 정규식 표현을 사용할 수 있어 복잡한 형태의 구분자도 처리가 가능하다.
· 입력 값
1 2 3 | Scanner s = new Scanner(System.in); String input = s.nextLine(); int input = s.nextInt(); | cs |
◦ 입력받은 값에 따라 다른 Method를 사용해 값을 사용할 수 있다.
- 생성자
1 2 3 4 5 6 7 8 | Scanner(String source) Scanner(File source) Scanner(File source, String charsetName) Scanner(InputStream source) Scanner(InputStream source, String charsetName) Scanner(Readable source) Scanner(ReadableByteChannel source) Scanner(ReadableByteChannel source, String charsetName) | cs |
5. StringTokenizer
- 긴 문자열을 지정된 구분자를 기준으로 token이라는 여러 개의 작은 문자열로 잘라내는데 사용되는 Class
- 정규식을 이용해 구분할 수도 있지만 익숙하지 않은 경우 StringTokenizer Class를 사용하게 된다.
- 생성자
1 2 | StringTokenizer(String str, String delim) StringTokenizer(String str, String delim, boolean returnDelims) | cs |
- 특징
· +-*/=()가 한 문자열인 경우 모두 각각이 모두 구분자가 되어 한 문자씩 Token으로 취급하게 된다.
· String Class의 split()과 StringTokenizer의 차이점은 split() 빈 문자열도 Token으로 인식해 “”으로 되어 있는 것도 문자열로 취급하는 반면 StringTokenizer는 빈 문자열을 Token으로 인식하지 않는다.
'Java > Theory' 카테고리의 다른 글
Chapter 9. Thread (0) | 2015.08.22 |
---|---|
Chapter 8. Useful Classes II (0) | 2015.08.19 |
Chapter 6. Collection Framework (0) | 2015.08.19 |
Chapter 5. Inner Class (0) | 2015.08.19 |
Chapter 4. java.lang Package (0) | 2015.08.19 |