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
※問題文に書いてあるプログラムを実行する際は自己責任で実行してください。
問題
次のプログラムを作成した。コンパイル、実行に関して以下の問いに答えなさい。なお、プログラムの実行日は2017年1月1日とします。
プログラム(Sample.java)
import java.time.*; public class Sample{ LocalDate date = LocalDate.now(); public static void main(String[] args){ System.out.println(date.toString()); } }
問.Sample.javaをコンパイル、実行するとどうなるか。下記の選択肢 a ~ d から正しいものを選べ。
選択肢
a. 2017-01-01と表示される
b. 2017/01/01と表示される
c. コンパイルエラー
d. 実行時エラー
解答
c. コンパイルエラー
解説
java.timeパッケージはjava 8から追加されたパッケージで、日付や時間に関するクラスやインタフェースがまとめられている。
日付を扱うクラスとしてはjava 7でもjava.util.Calendarクラスなどある。しかし、java.util.Calendarクラスなどの、日付や時刻を扱うための既存のクラスには特有の扱いにくさがあった。そこで、新しくまとめられたのがjava.timeパッケージ内の各クラスとインタフェースである。
前回はLocalDateクラスのインスタンス化について扱ったが、今回はLocalDateクラスのnow()メソッドが題材となっている。
LocalDateクラスのstaticメソッドであるnow()メソッドを利用すれば、now()メソッドが実行された日の日付を保持したLocalDateクラスのオブジェクトを取得できる。
今回は特にLocalDateクラスのnow()メソッドの使い方には問題がない。
しかし、変数dateはstatic変数ではないため、staticメソッドであるmainメソッドから直接呼び出すことはできない。
よって、コンパイルエラーとなる。
javaの資格試験を受験する際にはこのようなひっかけ問題にも注意すること。
各メソッドを利用したインスタンスの取得方法についてはこちらの記事を参照。
オススメ!!→ java 8 の問題はこちら