java練習問題
java練習問題
動作環境と問題内容について
javaの練習問題です。 出題範囲はjava 8 で追加された範囲を中心とします。難易度は Java SE 8 Programmer I の試験と同程度※を想定しています。
※ただし、場合によっては同試験には出題されない内容や形式が含まれることもあります。あくまでも難易度の目安として解答してください。
実行環境は以下の通りです。
PC:MacBook Pro 2011early 15inch
OS:Windows 8.1(デュアルブート) 64bit版
メモリ:16GB(8GB x 2)
CPU:Core i7-2635QM 2.00GHz
javaのバージョン:java 8 Update102
※問題文に書いてあるプログラムを実行する際は自己責任で実行してください。
問題
次のプログラムを作成した。コンパイル、実行に関して以下の問いに答えなさい。
プログラム(Sample.java)
import java.time.*; public class Sample{ public static void main(String[] args){ LocalDate date = LocalDate.parse("2017-01-01"); LocalTime time = LocalTime.parse("12:30:45"); LocalDateTime dateTime = LocalDateTime.parse(date, time); System.out.println(dateTime.toString()); } }
問.Sample.javaをコンパイル、実行するとどうなるか。下記の選択肢 a ~ e から正しいものを選べ。
選択肢
a. 2017-01-01 12:30:45と表示される
b. 2017-01-01T12:30:45と表示される
c. 何も表示されない
d. コンパイルエラー
e. 実行時エラー
解答
d. コンパイルエラー
解説
java.timeパッケージはjava 8から追加されたパッケージで、日付や時間に関するクラスやインタフェースがまとめられている。
日付を扱うクラスとしてはjava 7でもjava.util.Calendarクラスなどある。しかし、java.util.Calendarクラスなどの、日付や時刻を扱うための既存のクラスには特有の扱いにくさがあった。そこで、新しくまとめられたのがjava.timeパッケージ内の各クラスとインタフェースである。
今回はLocalDate、LocalTime、LocalDateTimeクラスのparseメソッドを使っている。
LocalDateクラスのparseメソッドは引数の文字列をもとにして、日付を保持したLocalDateクラスのオブジェクトを返す。
LocalTimeクラスのparseメソッドは引数の文字列をもとにして、時刻を保持したLocalTimeクラスのオブジェクトを返す。
LocalDateTimeクラスのparseメソッドは引数の文字列をもとにして、日付と時刻を保持したLocalDateTimeクラスのオブジェクトを返す。
問題の7行目で、LocalDateクラスのオブジェクトとLocalTimeクラスのオブジェクトをもとにLocalDateTimeクラスのオブジェクトを作成しようとしている。
しかし、LocalDateTimeクラスのメソッドでLocalDateクラスのオブジェクトとLocalTimeクラスのオブジェクトを引数にして日付と時刻を保持したLocalDateTimeクラスのオブジェクトを作成することができるのはLocalDateTime.ofメソッドである。parseメソッドはそれらを引数することはできない。
使用例は以下の通り。
LocalDate date = LocalDate.parse("2017-01-01"); LocalTime time = LocalTime.parse("12:30:45"); LocalDateTime dateTime = LocalDateTime.of(date, time);
詳しくはこちらの記事に書いてあるので、そちらも参照すること。
オススメ!!→ java 8 の問題はこちら