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){ LocalDateTime dateTime = LocalDateTime.parse("2017-01-01T10:20:30"); LocalDate date = LocalDate.parse("2017-01-01"); LocalTime time = LocalTime.parse("10:20:30"); if(dateTime.equals(date)){ System.out.print("A"); }else{ System.out.print("B"); } if(dateTime.equals(time)){ System.out.print("C"); }else{ System.out.print("D"); } } }
問.Sample.javaをコンパイル、実行するとどうなるか。下記の選択肢 a ~ k から正しいものを選べ。
選択肢
a. Aと表示される
b. Bと表示される
c. Cと表示される
d. Dと表示される
e. ACと表示される
f. ADと表示される
g. BCと表示される
h. BDと表示される
i. 何も表示されない
j. コンパイルエラー
k. 実行時エラー
解答
h. BDと表示される
解説
java.timeパッケージはjava 8から追加されたパッケージで、日付や時間に関するクラスやインタフェースがまとめられている。
日付を扱うクラスとしてはjava 7でもjava.util.Calendarクラスなどある。しかし、java.util.Calendarクラスなどの、日付や時刻を扱うための既存のクラスには特有の扱いにくさがあった。そこで、新しくまとめられたのがjava.timeパッケージ内の各クラスとインタフェースである。
今回はLocalDateTime、LocalDate、LocalTimeクラスのオブジェクトの比較を行っている。
これら3つのクラスには継承関係が無い。また、LocalDateクラスのオブジェクトは日付を保持している。LocalTimeクラスのオブジェクトは時刻を、LocalDateTimeクラスのオブジェクトは日付と時刻を保持している。
LocalDateクラスのオブジェクトとLocalDateTimeクラスのオブジェクトをequals()メソッドで比較しても、保持している日付同士の比較とはならない。
あくまでもオブジェクトして同一かどうかを比較する。そのため、equals()メソッドによるオブジェクトの比較の結果はfalseとなる。
同様に、LocalTimeクラスとLocalDateTimeクラスのオブジェクトをequals()メソッドで比較した際も、時刻の比較とはならないため比較の結果はfalseとなる。
よって h. BDと表示されるが正解となる。
オススメ!!→ java 8 の問題はこちら