Java 8 練習問題 その8


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 = /* [A] */
    System.out.println(date.toString());
  }
}

 

問.Sample.javaをコンパイルして画面に以下のように表示したい。

2017-01-01

/[A]/の部分に入れる選択肢として適切なものを以下のaからeの選択肢からすべて選びなさい。aからeに適切なものが無い場合はf,g,hから適切なものをすべて選びなさい。

なお、プログラムの実行時刻は2017年01月01日のAM10:20:30.000ちょうどであった。

 

選択肢

/* a */
  new LocalDate(2017, 1, 1);

/* b */
  new LocalDate("2017-01-01");

/* c */
  LocalDate.now();

/* d */
  LocalDate.of(2017, 1, 1);

/* e */
  LocalDate.parse("2017-01-01");

/* f */
  //aからeに適切な選択肢はなく、すべてコンパイルエラーとなる。実行時エラーになるものはない。

/* g */
  //aからeに適切な選択肢はなく、すべて実行時エラーとなる。コンパイルエラーになるものはない。

/* h */
  //aからgは当てはまらず、すべてコンパイルエラーまたは実行時エラーになる。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

解答

 

 

c,d,e

 

解説

java.timeパッケージはjava 8から追加されたパッケージで、日付や時間に関するクラスやインタフェースがまとめられている。

日付を扱うクラスとしてはjava 7でもjava.util.Calendarクラスなどある。しかし、java.util.Calendarクラスなどの、日付や時刻を扱うための既存のクラスには特有の扱いにくさがあった。そこで、新しくまとめられたのがjava.timeパッケージ内の各クラスとインタフェースである。

 

今回はLocalDateクラスの基本的なメソッドを扱っている。

 

それぞれの選択肢と解説をまとめた一覧は以下の通り。

 

選択肢 解答・解説
/* a */
new LocalDate(2017, 1, 1);
× コンパイルエラー

LocalDateクラスはnewを用いたインスタンス化はできず、コンパイルエラーとなる。

/* b */
new LocalDate("2017-01-01");
× コンパイルエラー

LocalDateクラスはnewを用いたインスタンス化はできず、コンパイルエラーとなる。

/* c */
LocalDate.now();
○ 正解

LocalDateクラスのnow()メソッドは、実行時の「日付」を保持したLocalDateクラスのインスタンスを返してくる。

 

今回は実行した日時が2017年1月1日となっているので正解。

/* d */
LocalDate.of(2017, 1, 1);
○ 正解

LocalDateクラスのof()メソッドは引数で指定した数値をもとにしたLocalDateクラスのインスタンスを返してくる。

 

引数はint型を指定する。

/* e */
LocalDate.parse("2017-01-01");
○ 正解

LocalDateクラスのparse()メソッドは引数で指定した文字列をもとにしたLocalDateクラスのインスタンスを返してくる。

 

引数にはCharSequence型を指定する。String型はCharSequence型を実装しているので引数に指定できる。

/* f */
適切な選択肢はなく、すべてコンパイルエラーとなる。
実行時エラーになるものはない。
 ×

今回は実行できるものがあるので当てはまらない。ひっかけ。

/* g */
適切な選択肢はなく、すべて実行時エラーとなる。
コンパイルエラーになるものはない。
 ×

今回は実行できるものがあるので当てはまらない。ひっかけ。

/* h */
aからgは当てはまらず、すべてコンパイルエラー
または実行時エラーになる。
×

今回は実行できるものがあるので当てはまらない。ひっかけ。

 

 

now()メソッド、of()メソッド、parse()メソッドはLocalDateクラス、LocalTimeクラス、LocalDateTimeクラスそれぞれに定義されている。

簡単にまとめると以下の通り。それぞれのメソッドの詳しい解説はこちらの記事を参照

LocalDate、LocalTime、LocalDateTimeクラスのメソッド(概要)
メソッド  説明
 now()メソッド メソッドが実行された日付/時刻を保持したインスタンスを返す。
of()メソッド 引数で指定した数値をもとに、日付/時刻を保持したインスタンスを返す。
parse()メソッド 引数で指定した文字列をもとに、日付/時刻を保持したインスタンスを返す。
newによるインスタンス化 LocalDateクラス、LocalTimeクラス、LocalDateTimeクラスはnewによるインスタンス化ができない

 

 

そのほかのjavaの練習問題はこちら

そのほかのjava関連の記事はこちら

  • このエントリーをはてなブックマークに追加

PAGE TOP