배운 내용
- Calendar
- Random
- 정규표현식
1. Calendar
캘린더는?
날짜와 시간에 관련된 클래스로서, 시스템 시계로 부터 시간을 가져오는 클래스이다.
- GregorianCalendar도 사용되지만 보편적으로는 Calendar가 사용된다.
- new 생성자 대신 getInstance() 메소드를 이용하여 시스템의 날짜와 시간 정보를 표현할 수 있다.
- 주로 상수와 메소드를 활용하여 다양한 기능을 사용한다.
대표적인 예제들을 보면서 Calendar를 활용해보자
- Calender를 getInstance(); 로 객체를 생성한다.
- get이라는 메소드를 사용하여 해당하는 년/월/일/시/분을 반환한다.
- 현재시간을 출력한다.
- 여자친구 혹은 남자친구가 있다는 가정하에 100일 기념일을 구해보자
- add메소드를 통하여 100일 후를 알아낼 수 있다.
- 그대로 출력한다.
- set메소드를 통하여 현재 시간과는 다르게 시간을 설정 할 수 있다.
- 내 생일을 시간으로 둔다고 가정할 때 month에 해당되는 곳이 8이란 것을 볼 수 있다. 내 생일은 9월이지만 월은 0 부터 시작하기 때문에 +1 해주어야 한다.
- 저기서 100일을 더했을 때 SimpleDateFormat을 이용하여 년/월/일/시간/분을 나타낸다.
- getTime()을 통하여 선언하고 실행한다.
- week 배열 안에 요일이 있다. 여기서 내 생일은 향후 10년간 무슨 요일인지 계산하려고 한다.
- for문을 사용하여 i가 10번 반복하게 하고 set메소드를 사용하여 시간을 임의로 설정해준다.
- DAY_OF_WEEK은 요일 (일요일은 1, 토요일은 7)을 말한다.
이 때 배열로 나타내기 위해선 인덱스가 0 부터 시작하기 때문에 -1를 계산해주어야한다. - 나온 값을 출력한다.
다음 예제로 달력을 만들어보자
- 키보드로 해당 월을 입력받게 하고 Calendar를 생성한 후 월을 입력받는다.
- set메소드로 현재년도인 18년을 입력하고 월은 0월부터 시작이기 때문에 -1을 계산해준다
- 여기서 해당년도 월일을 계산해야 달력을 출력할 수 있기 때문에
getActualMaximum을 통하여 선언하고 - get을 통하여 월의 요일을 선언한다.
- 먼저 for문을 사용하여 첫주차에 무슨 요일인지에 따른 공백을 만들어 주어 첫주의 요일 공백을 메운다
- 두번째 for문을 사용하여 월 최대일수를 반복하는데, 이 때 달력의 날짜마다 띄어쓰기가 되어야 하니 공백을 먼저 출력해준 후
- if문을 사용하여 한 주가 토요일에서 끝나면 다음 줄로 넘어가야하기 때문에 토요일 날짜에 나머지가 0이 된다면 줄을 넘어가게 선언하였다.
2. Random
Random은?
난수를 보다 편하게 사용할 수 있도록 한다.
- Random의 객체를 new로 생성한 후 생성된 객체를 nextInt(); 로 사용한다.
- Random을 new로 객체를 생성한다.
- Cards배열 내에 총 9개의 카드가 있는데 이걸 무작위로 섞을 것이다.
- for문을 사용하여 100회 반복을해주는데 nextInt(9)를 해주어 총 9개의 배열값을 선언한다.
- 배열의 난수의 자리를 바꿀 수 있도록 temp 및 배열 2개의 자리를 바꾸는 식을 선언한다.
- 향상된 for문으로 배열을 출력한다.
3. 정규표현식
정규표현식은?
특정한 규칙(패턴)을 가진 문자열의 집합을 표현하는데 사용하는 표현식 언어이다.
- 주로 텍스트를 많이 처리하는 프로그래밍 언어에서 사용한다.
- 특수기호나 문자를 이용하여 일정한 텍스트의 패턴이 있다.
- .은 임의의 글자가 하나 위치해야하고 *은 바로 앞에 문자가 있거나 없으면 선언한다. 결과는 문자열들 사이 abc가 있으면 매칭이 완료된다.
- 숫자만 선언하기 위해선 \d혹은 [0–9]를 사용한다. 또한 3자리만 입력하기 위해선 {3}을 선언한다. 때문에 대괄호 안에 숫자만을 넣고 {3}을 선언하면 숫자 세자리만 표시된다.
- 알파벳과 숫자만 출력하기 위해선 \w 혹은 [a-zA-Z0–9]를 사용한다. 5자리 이상을 입력하기 위해선 {5,}로 쉼표를 선언한다.
- 한글만 표현하기 위해선 [가-힣]을 사용한다. 3~5자리를 입력하기 위해선 {3,5}를 선언한다.