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"); System.out.println(date.toString()); System.out.println(date.plusDays(1).toString()); date.plusMonths(1); System.out.println(date.plusYears(1).toString()); } }
問.Sample.javaをコンパイル、実行すると何と表示されるか。(ア)(イ)に当てはまるものを以下の選択肢から選べ。
>java Sample 2017-01-01 (ア) (イ)
選択肢
a. 2017-01-01
b. 2017-01-02
c. 2017-02-01
d. 2017-02-02
e. 2018-01-01
f. 2018-01-02
g. 2018-02-01
h. 2018-02-02
i. 何も表示されない
j. ソースコードの該当箇所でコンパイルエラーが発生するため、実行ができない
k. 該当箇所で実行時エラーが発生する
l. 他の個所でコンパイルエラーや実行時エラーが起こるため、上記選択肢に適切なものが無い
解答
(ア) b. 2017-01-02
(イ) e. 2018-01-01
解説
java.timeパッケージはjava 8から追加されたパッケージで、日付や時間に関するクラスやインタフェースがまとめられている。
日付を扱うクラスとしてはjava 7でもjava.util.Calendarクラスなどある。しかし、java.util.Calendarクラスなどの、日付や時刻を扱うための既存のクラスには特有の扱いにくさがあった。そこで、新しくまとめられたのがjava.timeパッケージ内の各クラスとインタフェースである。
今回はLocalDateクラスのplusDays()メソッド、plusMonths()メソッド、plusYears()メソッドを使用している。
これらのメソッドはそれぞれ引数に指定された日数/月数/年数を加算したLocalDateクラスのオブジェクトを返してくる。
しかし、LocalDateクラス、LocalTimeクラス、LocalDateTimeクラスのオブジェクトはStringクラス同様に不変(immutable)なオブジェクトであり、一度作成されたオブジェクトの値が変更されることはない。
よって、問題文中のdateの保持する日付は変わらない。
(ア)ではdateの保持する日付に1日足した日付(2017-01-02)が表示されるが、dateの日付は変わっていない。
その後、date.plusMonths(1)が実行されているものの、dateの保持する日付は変わっていないため、(イ)ではdateの保持する日付に1年足した日付(2018-01-01)が表示される
オススメ!!→ java 8 の問題はこちら