( 本記事の目次 )
模擬問題に挑戦!
では、今回解説したことの理解度を確認するため、3問の模擬問題に挑戦してみましょう。
問題1
以下のコードを、コンパイル、実行した場合、正しい解答はどれですか?
import java.time.LocalDate; import java.time.format.DateTimeFormatter; public class Sample4 { public static void main(String[] args) { LocalDate date = LocalDate.of(2015, 1, 30); System.out.println(date.format(DateTimeFormatter.ISO_DATE)); } }
- A. 「2015/01/30」が出力される
- B. 「2015/1/30」が出力される
- C. 「2015-01-30」が出力される
- D. 「2015-1-30」が出力される
- E. 実行時エラーとなる
of()
メソッドに月、年、日をカンマ区切りで指定することで、LocalDate
オブジェクトを取得できます。なお、月、日が1ケタの場合、0
で埋めても埋めなくも問題ありません。6行目ではformat()
メソッドの引数にDateTimeFormatter
クラスのISO_DATE
定数を指定しているため、出力結果は「2015-01-30
」となります。
〔正解:C〕
問題2
以下のコードを、コンパイル、実行した場合、正しい解答はどれですか?
import java.time.LocalDateTime; public class Sample5 { public static void main(String[] args) { LocalDateTime dateTime = LocalDateTime.parse("2015-10-01T21:03:20"); dateTime.plusDays(3); dateTime.minusDays(2); System.out.println(dateTime); } }
- A. 「2015-10-01T21:03:20」が出力される
- B. 「2015-10-02T21:03:20」が出力される
- C. 「2015-10-02」が出力される
- D. 実行時エラーとなる
4、5行目は問題ありません。6行目で3日加算し、7行目で2日減算しています。しかし、dateTime
変数に代入は行っていないため、8行目のdateTime
変数は初期値である「2015-10-01T21:03:20
」のままです。
〔正解:A〕
問題3
以下のコードを、コンパイル、実行した場合、正しい解答はどれですか?
import java.time.LocalDate; import java.time.format.DateTimeFormatter; public class Sample6 { public static void main(String[] args) { LocalDate date = LocalDate.of(2015, 4, 32); date = date.minusDays(2); System.out.println(date.format(DateTimeFormatter.ISO_DATE)); } }
- A. 「2015-04-30」が出力される
- B. 「2015-4-30」が出力される
- C. コンパイルエラーとなる
- D. 実行時エラーとなる
5行目のof()
メソッドの引数を見ると、日が「32
」とあるため不適切です。コンパイルは成功しますが、実行時にDateTimeException
例外が発生します。
〔正解:D〕
次回はラムダ式を解説
次回は「ラムダ式」を取り上げます。仕様範囲の広いラムダ式ですが、基本構文から解説します。なお、資格Zineでは、Silver SE 7/8認定資格の試験対策の連載も開始されています。ぜひ参考にしてください。