Java Silver SE11の受験にあたって、ややこしかった点を備忘録としてまとめたメモです。個人的に分かりにくかったところをピックアップしています。
なお、内容のカテゴライズは、Java Silverの参考書である「徹底攻略Java SE 11 Silver問題集[1Z0-815]対応」(黒本)の章に準拠しています。
1import パッケージ名.*;
import文
を使用してインポートが必要となるクラスjava.langパッケージ
以外のパッケージのクラス1package パッケージ名;
import文
を定義し、利用するクラスのインポートを行うこと、利用するクラスがpublicクラス
であることが必要mainメソッド
)というpublic
とstatic
をつける1public static void main(String[] args) {// {String... args}も可能
2 // 処理
3}
Javaコマンド
を使う1java Sample
2java Sample.java
default
、if
など_
と通貨記号$
のみ使える_
は先頭と末尾と記号の前後にはつけられない1int a = 123_456; // OK
2int b = _123; // NG
int型
での10進数以外は以下の様に表す進数 | 接頭辞 |
---|---|
2進数 | 0b... |
8進数 | 0... |
16進数 | 0x... |
var型
では、データ型を特定できないものはコンパイルエラーになる1var a; // エラー
2var b = {1,2}; // エラー
var型
はローカル変数のみ使えるvar型
は変数を同時に宣言できない1var a = 1, b = 2; // エラー
StringBuilderクラス
のオブジェクトは参照情報になるため、比較しても同一の参照値が参照されるbyte型
は-128~127の範囲を扱うdouble型
がデフォルト1float f = 1.0; // floatだとコンパイルエラーになる
new演算子
を使う時は新しいインスタンスが作られるcase式
の特徴case
で指定できるのは定数式long
・double
・float
・boolean型
はcase式
に使えないcase値
はfinal宣言
された変数かリテラルを使うbreak文
がないとその下のcase
とdefault
も実行されるfor文
の初期化文に複数の変数を宣言するときは、同じ型でなければならないfor文
の外では使えない&&
・||
)で記述する,
は使えないdo-while文
でdo
の中カッコ{}
を省略した場合、その下には1文しか記述できない[]
はデータ型の後ろだけではなく変数の後ろにも記述できる変数型 | 初期値 |
---|---|
byte /short /int /long | 0 |
float | 0.0f |
double | 0.0d |
char | '\u0000'(空文字) |
String | null |
boolean | false |
null
は変数が何も参照してないことを表す""
は文字数0のStringクラスの
オブジェクトを表すstaticフィールド
はインスタンスを生成しなくても使えるstaticフィールド
にアクセスするにはクラス名.メソッド名と書くstaticメソッド
は、staticフィールド
とstaticメソッド
にしかアクセスできないint... num
の様に記述するreturn文
の後ろの処理は実行できないnew演算子
)に呼び出される{}
を使うことでオーバーロードされた全てのコンストラクタで共通の処理を行えるnew演算子
)に呼び出されるthis
で呼び出す時は最初に記述する修飾子 | 内容 |
---|---|
public | 全てのクラスからアクセスできる |
protected | 同じパッケージか、継承してるサブクラスからアクセス可能 |
なし | 同じパッケージのクラスからアクセス可能 |
private | クラス内からアクセス可能 |
private
、アクセスするためのメソッドをpublic
にするprivate
なフィールド・メソッドは継承しても引き継がないsuper();
の呼び出し処理が先頭行に暗追加されるpublic
で修飾されるdefault修飾子
を付ける1A a = new B();
2B b = (B) a;
ラムダ式の引数は関数インターフェースのメソッドの引数と一致させる必要がある
{}
で囲まれている時は複数処理が書けるがreturn文
とセミコロン;
が必要
()
は省略できる1Algo a = (name) -> { return "ABC"; };
2Algo a = (name) -> "ABC";
3Algo a = name -> "ABC";
final
な変数)である必要がある種類 | メソッド | 説明 |
---|---|---|
Consumer<T> | void accept(T) | 引数を受け取り処理する、結果は戻さない |
Supplier<T> | T get() | 引数を受け取らず、結果だけ返す |
Predicate<T> | boolean test(T) | 引数を受け取って、それを評価する |
Function<T,R> | R apply(T) | 引数を受け取って、指定された型の結果を返す |
List.of()メソッド
で作成されるリストは変更不可能となるため、要素の追加や削除を行うと例外が発生するfloor()メソッド
では、引数がNaN
・無限大・0
・-0
の時、引数と同じ値が返されるArrayListクラス
の特徴null
を追加できるremoveメソッド
実行後に読み出すと例外になるcompare()メソッド
は二つの配列を比較し、0
(同じ時)・負(第1配列の方が小さい)・正(第2が小さい)を返すcatchブロック
に移るcatch文
が複数ある場合で到達不可能なコードになる時はコンパイルエラーになるfinally処理
は例外の有無にかかわらず実行するtry-catch-finally
の順番を変えることはできない(コンパイルエラーになる)module-info.java
のファイル名で作成するmodule ファイル名{}
で宣言するjdepsコマンド
はクラスファイルの依存関係をパッケージレベルかクラスレベルで表示することができるアナライザ1jdeps --check
1-p
2
3--module-path
1--module-source-path
java.baseモジュール
には明示されていなくても暗黙的に依存する