Oracle Certified Java Programmer, Silver SE 8 認定資格

1Z0-808-JPN - Java SE 8 Programmer I を受験しました。

結果: 合格 / 正解率 92% (合格ライン: 65%)

という訳で『Oracle Certified Java Programmer, Silver SE 8 認定資格』を取得しました。

受験対象は「開発初心者向け」とあるので、Java の開発案件を1~2年程度やっていれば十分合格できるレベルだと思います。
また、Java SE 8 Programmer I という試験名ですが、Java 8 に関連する出題は Date and Time API や関数型インタフェースの java.util.function.Predicate<T> あたりだけのようなので、Java 8 を使ったことがないひとでも少し勉強すればなんとかなると思います。
とは言っても、普通の Web アプリの開発で2次元配列を使うことはあまりないだろうし、コンパイルは基本的に IDE 頼りなので、テキストで書いてあるコードを読んで「どこでコンパイルエラーが発生するか」という問題にはちょっと悩むことがありました。たまに引っ掛け問題みたいなのもあるし。

念のため問題集を買ってひと通り目を通しておいてよかったです。

徹底攻略 Java SE 8 Silver 問題集[1Z0-808]対応

今回、Silver を受験したのは Gold の前提資格になっているからです。なので、次は『Oracle Certified Java Programmer, Gold SE 8 認定資格』を目指してみようかと。

[2016/11/01 追記]
PDF 形式の認定証は CertView からダウンロードできます。ダウンロードできるようになるまでには2日程度かかるようです。

あと、Gold の問題集を買ってきました。

徹底攻略 Java SE 8 Gold 問題集[1Z0-809]対応


以下、個人的なメモ。

シグニチャは「メソッド名」と「引数リスト(型, 数, 順序)」のセットのことを指す。戻り値の型やアクセス修飾子はシグニチャに含まれない。
尚、オーバーロードの条件は「引数リストが異なる」こと。

フィールドの変数を初期化しない場合はデフォルト値で初期化される。メソッド内のローカル変数を初期化せずに使おうとするとコンパイルエラー。

アクセス修飾子は制限が緩いものから順に以下の通り。

  • public : すべてのクラスからアクセス可
  • protected : 同じパッケージに属するクラス、もしくは任意のパッケージに属するサブクラスからアクセス可
  • デフォルト : 同じパッケージに属するクラスからアクセス可 (パッケージプライベート)
  • private : 同じクラスからアクセス可

インタフェースを実装する場合、アクセス修飾子は変更できない。
スーパークラスのメソッドをオーバーライドする場合、アクセス修飾子を制限が厳しいものに変更することはできない。

クラスが継承関係にある場合、スーパークラスから先に初期化される必要がある。
サブクラスのコンストラクタでスーパークラスのコンストラクタ呼び出しを記述しない場合はコンパイラによって暗黙的に super() が追加される。ただし、スーパークラスにデフォルトコンストラクタが存在しない場合、コンパイルエラーになる。
また、コンストラクタの中で super() のあとに this() を記述するとコンパイルエラー。(this() はコンストラクタの先頭に記述する必要がある)

switch 文の default はどこに記述してもよい。(switch ブロックの先頭に書いてもコンパイルエラーにはならない)

java.lang.StringBuilder クラスの append メソッドは、文字列(シーケンス)と開始/終了のインデックスを引数に取って文字列の一部を append できる。普段、1引数のメソッドしか使わないからこれは知らなかった。

StringBuilder sb = new StringBuilder();
sb.append("abcde", 2, 4); // cd が append される

コレクション APIremove メソッドは指定された要素が削除されたかどうか真偽値を返す。(なぜか削除された要素を返すと勘違いしていた...)

java.time.LocalDate クラスは「時刻」に関する情報は持っていないため、format メソッドに DateTimeFormatter.ISO_DATE_TIME を指定すると実行時に例外が発生する。

ラムダ式では、引数が1つの場合は () は省略可で型は記述できない。処理部の {} を省略する場合は return は記述できない。return を記述する場合は {} が必要。