LoginSignup
4
2

More than 3 years have passed since last update.

【合格後の追記有】Java Silver 覚えられんやつメモ

Last updated at Posted at 2021-03-17

2021/4/13 追記
71%で受かりました。

受験に用いたのはeclipse、黒本、紫本です。
勉強法は、
・紫本を半分くらい読む
・(紫本読むのがつまらなさ過ぎて)黒本をわからないなりに、答えを参照しながら1周解く(模擬試験除く)
・黒本2周目は1章ずつ解いてから答えを参照、プラスで紫本も参照。適宜コードを書いてデバッグモードも使いながら動作確認。
・紫本模試第1回、黒本模試第1回、紫本模試第2回、黒本模試第2回、黒本模試第1回、黒本模試第2回の順で解く
・試験前日に苦手なとこだけ再確認

という感じです。黒本模試は84%ぐらい取れてたと思います。

試験当日は80分ぐらいで一通り解き終わり、手応え的には60%前後は確実に取れてて、多分見直ししても変わらんなぁという印象だったのでそのまま解答終了しました。

感想としては黒本で見たことある問題がたくさん出てマジか と思ったので、これから受験する方は黒本模試をベースに考えるといいかと思います。

以下のメモも参考になれば幸いです。


試験6日前に、2か月前にキックオフしたプロジェクトの基本設計フェーズに突然ぶち込まれ、試験前日の土曜日の出勤が確定して勉強時間の確保ができないこと間違いなしな状態になってしまったので、今まで勉強してきて見たことあるけどイマイチ頭に入ってきてなかった部分をざっと見返せるものを作って直前に詰め込もうと思いました。

Java SE11 Silverの受験を控えている方の参考にもなれば幸いです。
(黒本のまとめ問題を参考にしている&自分用なので、順番とか整理してません。)

String型の同値判定

  • ==はインスタンスの参照が同じかどうかを判定している。
  • リテラルとして記述した文字列は、基本的に使いまわされる。
  • internメソッドはすでにメモリ上にあるString型オブジェクトへの参照を戻す。
public class Main {
    public static void main(String[] args) {
        String s1 = new String("java"); //新規オブジェクト
        String s2 = "java"; //リテラル(コンパイル時に定数となる)
        String s3 = s2.intern(); //s2の参照と同じもの
        System.out.println((s1 == s2) + ", "); //false
        System.out.println((s2 == s3) + ", "); //true
        System.out.println((s3 == s1) + " "); //false
    }
}
public class Main {
    public static void main(String[] args) {
        String s1 = "java";
        String s2 = new String("java");
        String s3 = s2.intern(); //"java"というリテラルの参照を戻す
        System.out.println((s1 == s2) + ", "); //false
        System.out.println((s2 == s3) + ", "); //false
        System.out.println((s3 == s1) + " "); //true
    }
}

varによる変数宣言

  • ローカル変数の初期化時
  • 拡張for文内のインデックス
  • 通常for文内で宣言されたローカル変数
  • try-with-resourse文内のローカル変数(問題で見たことない)
    上記4つに限定されている。

  • メソッドの引数

  • コンストラクタの引数

  • メソッド戻り型

  • フィールド(メンバ変数)

などでは使用できない(コンパイルエラー)

配列の初期化と宣言

(変な宣言のしかたするなよ・・・)

  • 1次元目の要素数の宣言は省略できない。int[] ary = {}は1次元目に要素0の配列を作成しているのでOK

  • 要素数の指定と初期化の両方を使用した配列の作成はコンパイルエラー
    こういうやつ→int[] ary = new int[2] {10,20}

アクセス修飾子

修飾子 同クラス内 同パッケージ内 サブクラス内 どこでもok
private
(なし)
protected
public
  • インターフェースは公開を前提としているため、publicのみ。修飾子をつけなかった場合は暗黙で付与される。
  • 抽象メソッドはインターフェースを実現したクラスやそのサブクラス内で実装されるため、privateは不可。

finalの挙動

  • 変数につくと変更を禁止する
  • メソッドにつくとオーバーライドを禁止する
  • インターフェースは実現されることが目的なのでfinalはつけられない。

mismatchとcompareの挙動

  • mismatch
    • 2つの配列を先頭から比較し、最初に一致しなかったインデックスを探す
  • compare -2つの配列を辞書順に並べたときの順番を比較。第一引数が第二引数よりも前なら負、同じなら0、第二引数のほうが前なら正を返す。

変数の型について

  • charとshort
    • キャストすれば変換できる(文字番号と数値の変換を行う)

モジュールオプションについてのキーワード

  • セキュリティと保守性の向上
  • 堅牢性の向上
  • コマンドラインからモジュールのエクスポート設定ができるが、module-info.javaに記述すべきなので望ましくない。
  • Javaの基本APIはjava.baseモジュールにある
  • -classpassに含まれるクラスは無名モジュールの一部
  • mojule-info.javaのファイル名は変更できない。(空になっているのはOK)
  • public,privateという単語は出てこない。requires, exportsになる。

捨て問(にする予定)

  • コマンドラインオプションはなんかそれっぽいオプション(-d とか -cpとか)がついてるやつ選べば当たる
  • ラムダ式はよくわからんけどコード見てそれっぽいのを選ぶ

受験料高いから一発で受かりてえ・・・

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2