[JavaSilver対策]直前の対策

1度落ちてしまったので再受験する。直前の対策ように個人的に間違いやすいところをあげていく

復習用

オーバーライドとオーバーロード

  • オーバーライド : メソッドを再定義すること、メソッドのシグネチャが同一・戻り値型が同一かサブクラス型・アクセス修飾子が同じか緩い
  • オーバーロード : メソッドを多重定義すること、メソッド名は同じで、引数の数・型・順番を変える

メソッド、フィールドのアクセス

  • メソッドはインスタンスの型で決まる
    A foo = new foo(); foo.x() //xはfoo型
  • メンバ変数は宣言する型で決まる
    A foo = new foo(); foo.num //numはA型

instanceOf

クラス名やインターフェース名をつけると指定したオブジェクトが継承・実装関係にあるか調べる。右辺に変数宣言が書いてあったらパターンマッチングになる。instanceOfがtrueのときに変数にオブジェクトを代入する

equals()

  • 文字列の値が等しいか判定する
  • オブジェクトにもequals()は存在する。==と同じ働きをする
  • 引数がnullの場合は必ずfalseを返す(ぬるぽにならない)null.equals()はnullにメソッド呼び出しているのでぬるぽだけど

sealed継承

  • sealed/non-sealed/finalのいずれか必須

final

  • インターフェースやabstractの実装や継承が前提となっているクラスはfinalできない

throws throw

  • throwsは例外を投げる宣言→メソッドの呼び出しもとに処理を任せる(外すとコンパイルエラーになるときはチェック例外)
  • throwは例外を投げること

break continue

  • breakは最も近いループを抜ける、ラベルの外側にも抜ける
  • continueは次のループに行く
  • switch文の中のbreakはswitchの外に行くだけ(switchのbreakとなる)

変数の初期化

  • ローカル変数は自動初期化されない
  • 未初期化の変数を使用 = コンパイルエラー
  • フィールド変数は自動初期化される(int=0, boolean=false, 参照型=null)

インターフェースのメソッド修飾子

  • 抽象メソッド: public または package-private(private不可)
  • defaultメソッド: private可
  • staticメソッド: private可
  • インターフェースメソッドの衝突 → オーバーライドして明記必要

try-with-resources

  • リソース変数は実質的final = 再代入不可
  • AutoCloseableを実装している必要あり
  • 複数リソースはセミコロンで区切る

キャスト

  • ダウンキャスト: instanceofでチェック推奨
  • キャスト先のインスタンスが違う → ClassCastException(実行時エラー)
  • キャスト演算子は括弧で囲む: ((A)b).test()

switch式

  • yieldで値を返す: case x: yield y;
  • ブロック内で値を返すときに使用

varとジェネリクス

  • varでArrayList宣言時、ジェネリクスの型指定必須
  • var list = new ArrayList<>(); NG
  • var list = new ArrayList<String>(); OK
  • 普段の宣言では、ローカル変数のみ・null禁止・初期化必須

コンストラクタ

  • this(), super()はコンストラクタの最初にかく
  • 両方一緒には使えない

static

  • インスタンス生成がなくても使えるので->static以外の変数、メソッドは使えない

たまにbool(javaにこの宣言はない)とbooleanがある。引っかからないように

これで落ちたらブロンズから再出発すればいいや、と。気楽に

2026-04-29 23:16