* Date 관련 클래스
1) Calender
2) Date
3) LocalDate, LocalTime, LocalDateTime
* Calender, Date 클래스는 혼자서 공부하거나 학원에서 사용할때에는 많이 사용하나, 회사에서 쓰기에는
부적합한 클래스.
* 아래의 문제를 해결하기 위해서 java8부터는 LocalDate, LocalTime, LocalDateTime 이라는 클래스가 생김.
* Calender, Date의 단점
1. 불변 객체가 아니다.
- set, get을 통해 값이 유동적으로 변한다.
- set으로 변경이 가능하다는 점은 누군가 악의적으로 변경할 수 있기 때문에 get/set 메서드에서 직접 Date클래스를
사용하는 것이 위험하다.
2. 상수 필드 남용
* 정적변수(필드)
- 클래스 내에 선언된 정적 변수는 어느 객체에도 포함되지 않으며 항상 값이 유지되도록 하는 변수
- 해당 클래스로부터 생성된 모든 객체가 공동으로 사용할 수 있는 변수.
- static int carCount = 1;
* 상수필드 (=상수변수) : 값을 변경할 수 없는 변수, 선언과 함께 초기화를 해야한다.
- final static int MAXSPEED = 200;
* calendar.add(Calendar.SECOND, 2);
3. 헷갈리는 월 지정
- 1월을 0으로 표현하는 문제 + Calendar.OCTOBER로 월을 지정하지만 실질적인 값은 9(!=10)인 문제
4. 일관성 없는 요일 상수
- 사용하는 곳에 따라 일요일의 index가 0일 수도, 1일 수도 있다.
5. Date와 Calendar 객체의 역할 분담
- 다소 치명적인데 년/월/일 계산은 Date 클래스만으로는 부족해서 왔다갔다 하는 문제가 있다.
또한 Calendar객체를 생성하고 Date 객체를 생성하는 프로세스를 거치기 때문에 번거롭고 생성비용이 비싸다.
6. 기타 java.util.Date 하위 클래스의 문제
* LocalDate / LocalTime / LocalDateTime
- LocalDate : [년-월-일] 데이터를 가지고 오는 클래스
- String date = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
- LocalTime : [시-분-초] 데이터를 가져오는 클래스
- String time = LocalTime.now().format(DateTimeFormatter.ofPattern("hhmmss"));
- LocalDateTime : [년-월-일-시-분-초] 데이터를 가져오는 클래스
- String date = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddhhmmss"));
'IT 개발 > JAVA' 카테고리의 다른 글
JDBC : HDF 파일 Insert (0) | 2020.03.23 |
---|---|
poi 라이브러리 / Excel DB 적재 (0) | 2020.01.14 |
JAVA (3일차) - 반복분 (0) | 2019.06.15 |
JAVA (2일차) - 기초 다지기 (0) | 2019.06.13 |
JAVA (1일차) - 기초 다지기 (0) | 2019.06.13 |