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 date = LocalDateTime.parse("2017-01-01 10:20:30"); System.out.println(date.toString()); } }
問.Sample.javaをコンパイル、実行した結果として正しいものはどれか。
画面に文字が表示されると思う場合はa~fの中から、エラーになると思う場合はg、hの中から解答を選びなさい。
選択肢
a 2017-01-01 10:20:30
b 2017/01/01 10:20:30
c 2017.01.01. 10:20:30
d 2017-1-1 10:20:30
e 2017/1/1 10:20:30
f 2017.1.1. 10:20:30
g コンパイルエラー
h 実行時エラー
解答
h 実行時エラー
解説
java.timeパッケージはjava 8から追加されたパッケージで、日付や時間に関するクラスやインタフェースがまとめられている。
日付を扱うクラスとしてはjava 7でもjava.util.Calendarクラスなどある。しかし、java.util.Calendarクラスなどの、日付や時刻を扱うための既存のクラスには特有の扱いにくさがあった。そこで、新しくまとめられたのがjava.timeパッケージ内の各クラスとインタフェースである。
今回はこちらの記事でも解説しているLocalDateTimeクラスのparseメソッドを利用している。
LocalDateTimeクラスのparseメソッドは引数の文字列をもとにして、LocalDateTimeクラスのインスタンスを返す。
使い方は以下の通りとなる(2017年1月1日 午前10時20分30秒を表す例)。
LocalDateTime obj = LocalDateTime.parse("2017-01-01T10:20:30");
parseメソッドは第二引数で書式の指定もできるが、今回は第一引数しか使っていない。
第二引数で書式を指定していない場合、年月日と時刻の間は T で繋がなければならない。サンプルは半角スペースで繋いでいるが、これでは書式が正しくない。
書式は正しくないが、引数にのデータ型は間違っていない。そのため、コンパイルエラーにはならず、実行時にエラーとなる。
LocalDate/LocalTime/LocalDateTimeクラスのインスタンスを獲得するための各メソッドの詳しい解説はこちらの記事を参照。
オススメ!!→ java 8 の問題はこちら