본문 바로가기
Oracle 1z0-808 Exam

Oracle 1z0-808 Exam 2024: Question #3

by Status Code 2024. 2. 18.

Oracle 1z0-808 Exam: Question #3 해설

질문 원본 내용

Question #3
Consider the following code:

public static void main(String[] args) {
    String date = LocalDate
                    .parse("2014-05-04")
                    .format(DateTimeFormatter.ISO_DATE_TIME);
    System.out.println(date);
}

What is the result?
A. May 04, 2014T00:00:00.000
B. 2014-05-04T00:00:00.000
C. 5/4/14T00:00:00.000
D. An exception is thrown at runtime.

질문 번역

다음 Java 코드에 대한 문제입니다:

public static void main(String[] args) {
    String date = LocalDate
                    .parse("2014-05-04")
                    .format(DateTimeFormatter.ISO_DATE_TIME);
    System.out.println(date);
}

어떤 결과가 콘솔에 출력될까요?

A. May 04, 2014T00:00:00.000
B. 2014-05-04T00:00:00.000
C. 5/4/14T00:00:00.000
D. 런타임에 예외가 발생한다.

정답: D. 런타임에 예외가 발생한다.

해설

이 코드는 java.time.LocalDate 클래스와 java.time.format.DateTimeFormatter 클래스를 사용하여 날짜를 파싱하고 포매팅합니다. LocalDate.parse 메소드는 문자열을 파싱하여 LocalDate 객체를 생성합니다. 여기서 "2014-05-04" 문자열은 ISO 형식의 날짜를 나타냅니다.

문제는 .format(DateTimeFormatter.ISO_DATE_TIME) 부분에 있습니다. LocalDate 객체는 날짜만 포함하고 있고 시간 정보는 포함하고 있지 않습니다. 그러나 ISO_DATE_TIME 포매터는 날짜와 시간을 모두 포매팅하려고 시도하기 때문에, 시간 정보가 없는 LocalDate 객체에 이를 적용하면 UnsupportedTemporalTypeException 예외가 런타임에 발생합니다.

따라서, 올바른 출력을 위해서는 DateTimeFormatter.ISO_DATE를 사용해야 하며, 이 경우에는 "2014-05-04"와 같은 형식의 날짜 문자열이 출력됩니다. 하지만, 주어진 코드는 ISO_DATE_TIME 포매터를 사용하므로, 런타임에 예외가 발생하는 것이 정확한 결과입니다.

나머지 선택지는 LocalDate 객체에 시간 정보가 포함되어 있을 것으로 가정하고 있으나, 실제로는 그렇지 않기 때문에 정답이 될 수 없습니다.

이 문제는 java.time 패키지의 사용법과 객체가 지원하는 기능의 범위를 이해하는 것을 평가합니다.

댓글