JavaSilverSE11試験対策用忘備録【黒本ベース】

IT資格
IT資格

この記事はJava silver SE11の受験にあたって自分用にややこしかった点を忘備録としてまとめたメモです。

注意

全ての事項を網羅してる訳ではありません。僕が分かりにくかったところをピックアップしています。

基本的に、JavaSilverの参考書である黒本『徹底攻略Java SE 11 Silver問題集』の章ごとで分類してまとめましたが、適当にカテゴライズしたので悪しからず…。内容は黒本以外から持ってきたものもあります。

(内容については随時更新してくかもです)

スポンサーリンク

第1章-Javaの特徴と簡単なJavaプログラムの作成

Javaの特徴

  • Javaのデータには参照型と基本データ型がある

Javaの開発環境

  • JavaSE11では
    • AppletおよびWeb Startが削除された
    • 32ビット版バイナリが提供されなくなった

クラスのインポート

  • import 文などを使用してクラスのインポートが必要となるのは
    • 自クラスとは異なるパッケージのクラス
    • java.langパッケージ以外のパッケージのクラス

パッケージ

  • パッケージの目的は、名前空間の提供、アクセス制御、クラスの分類の3つ
  • 他パッケージのクラスを利用する場合、import文を定義し、利用するクラスのインポートを行うこと、利用するクラスがpublicクラスであることが必要
  • 無名パッケージのクラスは無名パッケージのクラスからしかアクセスできない

mainメソッド

  • 処理を始めるメソッドのことをエントリーポイントという(mainメソッド)
    • 引数名以外は変更できない
    • publicとstaticをつける
public static void main(String[] args) {//{String... args}も可能
  //処理
}

Javaコマンド

  • Javaプログラムを実行するにはJavaコマンドを使う
java Sample
java Sample.java

第2章‐基本データ型と文字列操作

識別子の命名規則

  • 予約語は識別子には使えない
  • 数字から始められない
  • 記号はアンダースコア「_」 と通貨記号「$」のみ使える

整数リテラル

  • アンダースコア「_」は先頭と末尾と記号の前後にはつけられない
int a=123_456;//OK
int b=_123://NG

int型

  • 10進数以外は以下の様に表す
進数接頭辞
2進数0b…
8進数0…
16進数0x…

var型

  • データ型を特定できないものはコンパイルエラーになる(配列の初期化式もエラー)
var a;//エラー
var b = {1,2};エラー
  • ローカル変数のみ使える(フィールド変数や引数変数には使えない)
  • var型は変数を同時に宣言できない

StringBuilder

  • StringBuilderオブジェクトは参照情報になるため比較しても同一の参照値が参照される

第3章-演算子と判定構造

型変換

  • byte型は-128~127の範囲を扱う
  • 浮動小数点数はdouble型がデフォルト
float f = 1.0;//floatだとコンパイルエラーになる

同値性と同一性

  • 同値性はインスタンスは異なるが同じ値をもっていること
    • new演算子を使う時は新しいインスタンスが作られる
  • 同一性は同じインスタンスを参照していること

分岐文

  • 分岐文を定義する場合は実際の条件結果に関係なく利用する変数を初期化する必要あり

switch文

  • case式
    • caseで指定できるのは定数式
    • long,double,float,boolean型はcase式に使えない
    • case値はfinal宣言された変数かリテラルを使う
    • break文がないとその下のcaseとdefaultも実行される

第4章-制御構造

for文

  • 初期化文に複数の変数を宣言するときは同じ型でなければならない
    • 初期化文内で宣言した変数はfor文の外では使えない
  • 条件文を複数書くときは論理演算子で記述する
    • カンマ「,」は使えない

do-while文

  • doの中カッコ{}を省略した場合その下には1文しか記述できない

第5章-配列の操作

配列型変数

  • 配列型変数の宣言時
    • 大かっこ「[]」はデータ型の後ろだけではなく変数の後ろにも記述できる
    • 配列型変数の宣言時には要素数は指定できない

配列の初期値

  • 値を代入せずに生成すると初期値になる
変数型初期値
byte,short,int,long0
float0.0f
doube0.0d
char‘\u0000’ (空文字)
Stringnull
booleanfalse

第6章-インスタンスとメソッド

リテラル

  • 「null」は変数が何も参照してないことを表す
    • 空文字「””」は文字数0のStringクラスのオブジェクトを表す

ガベージコレクション

  • インスタンスの参照が無くなった時点でガベージコレクションの対象になる

staticフィールド、staticメソッド

  • staticフィールドはインスタンスを生成しなくても使える
  • staticフィールドにアクセスするには「クラス名.メソッド名」と書く
  • staticメソッドは、staticフィールドとstaticメソッドにしかアクセスできない

オーバーロード

  • オーバーロードを行うには同一クラス内に引数の数、型、順番が異なるメソッドを定義する必要がある
    • 変数名は関係なし

可変長引数

  • 可変長引数は「int… num」の様に記述する
    • 可変長引数は最後の引数でなければならない

return文

  • return文の後ろの処理は実行できない

コンストラクタ

  • コンストラクタのルール
    • コンストラクタには戻り値の型は記述できない
    • インスタンス生成時(new演算子)に呼び出される
    • アクセス修飾子の制限は無い
  • 初期化子「{}」を使うことでオーバーロードされた全てのコンストラクタで共通の処理を行える
    • 初期化子の処理が最初に実行される
    • インスタンス生成時(new演算子)に呼び出される
  • コンストラクタを省略した時はデフォルトコンストラクタが定義される
  • コンストラクタから別のコンストラクタを呼び出すときは「this」を使う
    • thisで呼び出す時は最初に記述する

アクセス制御

  • アクセス修飾子は以下の4つ
修飾子内容
public全てのクラスからアクセスできる
protected同じパッケージか、継承してるサブクラスからアクセス可能
なし同じパッケージのクラスからアクセス可能
privateクラス内からアクセス可能

カプセル化

  • カプセル化はフィールドを「private」、アクセスするためのメソッドを「public」にする

第7章-クラスの継承、インターフェース、抽象クラス

継承

  • コンストラクタとprivateなフィールド・メソッドは継承しても引き継がない

スーパークラス

  • コンストラクタを呼び出してオブジェクトを生成する際には、スーパークラスのコンストラクタを呼び出す必要がある
    • コンストラクタ呼び出しが明記されてなくてもコンパイル時にsuper();の呼び出し処理が先頭行に暗追加される

インターフェース

  • インターフェースは自動的にpublicで修飾される
  • インターフェースに実装を記述するにはデフォルトメソッドを使う
    • デフォルトメソッドにはdefault修飾子を付ける
    • サブインターフェイスなどで、デフォルトメソッドの処理内容を変えたい時にはオーバーライドを使う
  • インターフェイスはインスタンス化できない

抽象クラス

  • 抽象クラスはインスタンス化できない

オーバーライド

  • メソッドの名前と引数(型、数、順番)は同じである必要がある
  • 戻り値の型は同じかサブクラス型である
  • アクセス修飾子は同じかより緩いもの

型変換

  • 型が違う時は型変換をする必要がある
A a = new B();
B b = (B) a;

第8章-関数インターフェース、ラムダ式

ラムダ式

  • ラムダ式の引数は関数インターフェースのメソッドの引数と一致させる必要がある
    • データ型の指定は省略できる
    • 引数を受け取らないメソッドの時は引数を省略できる
    • ローカル変数と同名の変数は引数に宣言できない
  • 「{}」で囲まれている時は複数処理が書けるがreturn文とセミコロン「;」が必要
    • ()は省略できる
Algo a = (name) -> { return "ABC"; };
Algo a = (name) -> "ABC"; 
Algo a = name -> "ABC";
  • ラムダ式の外のローカル変数にアクセスするときには、変更されない変数(実質的にfinalな変数)である必要がある

関数型インターフェース

  • 関数型インターフェースの4種類の特徴
関数型インターフェースメソッド説明
Consumer<T>void accept(T)引数を受け取り処理する、結果は戻さない
Supplier<T>T get()引数を受け取らず、結果だけ返す
Predicate<T>boolean test(T)引数を受け取って、それを評価する
Function<T,R> R apply(T)引数を受け取って、指定された型の結果を返す

第9章-API

Listコレクションのメソッド

  • List.of()メソッドで作成されるリストは変更不可能となるため、要素の追加や削除を行うと例外が発生する

Mathクラスのメソッド

  • floor()メソッドでは、引数が「NaN、無限大、0、-0」の時、引数と同じ値が返される

ArrayListクラスのメソッド 

  • ArrayListクラスの特徴
    • 要素数を自動的に増やすことができる
    • 重複した値を扱える
    • スレッドセーフではない
    • 値にnullを追加できる
  • removeメソッド実行後に読み出すと例外になる

Arraysクラスのメソッド

  • compare()メソッドは二つの配列を比較し、0(同じ時)、負(第1配列の方が小さい)、正(第2が小さい)を返す

第10章-例外処理

try-catch文

  • 例外が発生したらすぐにcatchブロックに移る
  • catch文が複数ある場合で到達不可能なコードになる時はコンパイルエラーになる

try-catch-finally文

  • finally処理は例外の有無にかかわらず実行する
  • try-catch-finallyの順番を変えることはできない(コンパイルエラーになる)

第11章-モジュールシステム

モジュールシステムの概要

  • 内部APIの想定してない使用を防げる
  • カスタムランタイムを構成できる
  • コンパイル時と実行時の両方で必要になるモジュールを認識できる
  • 厳密なカプセル化が可能

モジュール記述子

  • module-info.javaのファイル名で作成する
  • module ファイル名{}で宣言する
  • プログラムコードのルート階層に配置する

モジュール型プロジェクト

  • jdepsコマンドはクラスファイルの依存関係をパッケージレベルかクラスレベルで表示することができるアナライザ
 jdeps --check

モジュール型アプリケーション

  • モジュール化されたアプリケーションをコンパイルするには、モジュールの検索パスを指定するオプションが必要
-p
--module-path

他にもディレクトリ配下のモジュールを一括してコンパイルするオプションがある

--module-source-path

モジュールグラフ

  • 各モジュールはjava.baseモジュールには明示されていなくても暗黙的に依存する

モジュール型JDK

  • 観測可能なモジュールが検索される順番は、ルート→コンパイル→アップグレード→システム→アプリケーション
スポンサーリンク
Dim雑記
タイトルとURLをコピーしました