1. 날짜와 시간
1.1 Calendar와 Date
JDK 1.8부터 'java.time패키지'로 기존의 단점들을 개선한 새로운 클래스들이 추가되었다.
- Calendar와 GregorianCalendar
* Calendar를 상속받아 완전히 구현한 클래스로는 GregorianCalendar(오늘날 전세계 공통으로 사용하고 있는 그레고리력에 맞게 구현한 것)와 BuddhistCalendar가 있는데, getInstance()는 시스템의 국가와 지역설정을 확인해서 태국인 경우에는 BuddhistCalendar의 인스턴스를 반환하고, 그 외에는 GregorianCalendar의 인스턴스를 반환한다.
- Date와 Calendar간의 변환
Calendar가 새로 추가되면서 Date는 대부분의 메서드가 'deprecated'되었으므로 잘 사용되지 않는다.
[참고] Java API문서를 보면 더 이상 사용을 권장하지 않는 대상에 'deprecated'가 붙어있다.
blog.leocat.kr/notes/2017/04/08/java-deprecated-and-deprecated
1) Calendar를 Date로 변환
2) Date를 Calendar로 변환
2. 형식화 클래스
성적처리 프로그램을 작성했을 때 각 점수의 평균을 소수점 2자리로 일정하게 맞춰서 출력하려면 어떻게 해야할까 고민해본 것이 있을 것이다.
평균값에 100을 곱하고 int형으로 형변환한 다음에 다시 100f로 나누고 반올림하려면 Math.round()도 써야하고 등등 생각만 해도 복잡해진다.
날짜를 형식에 맞게 출력하려면 숫자보다 더 복잡해진다. Calendar를 이용해서 년, 월, 일, 시, 분, 초를 각각 별도로 얻어서 조합을 해야 하는 과정을 거쳐야 한다.
자바에서는 이러한 문제들을 쉽게 해결할 수 있는 방법을 제공하는데, 그 것이 바로 형식화 클래스이다. 이 클래스는 java.text패키지에 포함되어 있으며 숫자, 날짜, 테스트 데이터를 일정한 형식에 맞게 표현할 수 있는 방법을 객체지향적으로 설계하여 표준화하였다.
형식화 클래스는 형식화에 사용될 패턴을 정의하는데, 데이터를 정의된 패턴에 맞춰 형식화할 수 있을 뿐만 아니라 역으로 형식화된 데이터에서 원래의 데이터를 얻어낼 수도 있다.
ex. "123"과 같은 문자열을 Integer.parseInt()를 사용해서 123이라는 숫자로 변환하는 것과 같은 것을 의미
2.1 DecimalFormat
형식화 클래스 중에서 숫자를 형식화 하는데 사용되는 것이 DecimalFormat이다. DecimalFormay을 이용하면 숫자 데이터를 정수, 부동소수점, 금액 등의 다양한 형식으로 표현할 수 있으며, 반대로 일정한 형식의 텍스트 데이터를 숫자로 쉽게 변환하는 것도 가능하다.
2.2 SimpleDateFormat
Date와 Calendar만으로는 날짜 데이터를 원하는 형태로 다양하게 출력하는 것은 불편하고 복잡하다. 그러므로 SimpleDateFormat을 사용하면 이러한 문제들이 간단하게 해결된다.
2.3 ChoiceFormat
ChoiceFormat은 특정범위에 속하는 값을 문자열로 변환해준다. 연속적 또는 불연속적인 범위의 값들을 처리하는 데 있어서 if문이나 switch문은 적절하지 않한 경우가 많다. 이럴 때 ChoiceFormat을 잘 사용하면 복잡하게 처리될 수 밖에 없었던 코드를 간다하고 직관적으로 만들 수 있다.
2.4 MessageFormat
MessageForamt은 데이터를 정해진 양시에 맞게 출력할 수 있도록 도와준다.
3. java.time 패키지
Java에서 날짜와 시간을 다루는데 사용해왔떤, Data와 Calendar가 가지고 있던 단점들을 해소하기 위해서 JDK 1.8부터 'java.time패키지'가 추가되었다.
blog.naver.com/mals93/220728451743
'Java > 기초' 카테고리의 다른 글
[Java] StringTokenizer 클래스 (0) | 2020.11.15 |
---|---|
[Java] 래퍼(Wrapper) 클래스, 정규식(Regular Expression) (0) | 2020.11.15 |
[Java] java.lang패키지와 유용한 클래스1 (0) | 2020.09.11 |
[Java] 예외처리 (0) | 2020.08.30 |
[Java] 객체지향 프로그래밍 5 (0) | 2020.08.30 |