基本
以下の本で勉強した際の勉強ノート。
Javaコマンド
- 一定のルールに従って書いたJavaコードは、
java Main.javaで実行可能。 -
javac Main.javaでコンパイルして、java Mainで実行する。 -
-cpor-classpathでクラスパス追加。
ファイル
- クラスファイルは、中間ファイル。
Exception and Error
共通
- 例外には、unchecked例外とchecked例外がある。
- checked例外は、例外処理を実装しないとコンパイルエラーとなる。
Error
- Java実行環境に関する例外は、
Error。 -
Errorとそのサブクラスはunchecked例外。
Exception
- アプリケーションに関する例外は、
Exception。 -
Exceptionのサブクラスの内、RuntimeExceptionとそのサブクラスはunchecked例外。それ以外はchecked例外。 - checked例外は例外処理必須で、unchecked例外は任意。
- マルチキャッチ構文は、継承関係のある例外クラスでは使用できない。
- 継承関係のある例外クラスは、サブクラスから順番にcatchしなければならない。
- tryの使い方には
- try-catch
- try-finally
- try-catch-finally
- try-with-resources
変数
リテラル
- 整数リテラルは、2,8,10,16進数で表現する。
- 浮動小数点リテラルは、10進数または指数表現。
- 文字リテラルは
'で囲む。 - 文字列リテラルは
"で囲む。
数値リテラル
- 区切り文字に
_を使える。1_000区切り文字は、先頭、末尾、記号の前後には使用できない。
変数
- 変数宣言は、
Type<T extends P> variable = new Type<>();という形式。-
Typeは型。 -
T extends Pは型パラメータ。参照型のみ指定可能。PはTの親クラス。T super Cもあり、CはTの子クラス。 -
variableは変数名。 -
Type<>()はコンストラクタ。この<>はダイヤモンド演算子。
-
-
varはローカル変数にのみ使用できる。 -
var val = null; var val;は、型推論ができないため、不可。
基本データ型
- Boxingでは、暗黙の型変換できない。
- Unboxingでは、nullを代入できない。
配列
- 初期化時に配列の大きさを指定しないとコンパイルエラー。
var array = new int[];
Enum
-
switch()の引数にできるのは、整数型と文字列型のみ。 -
switch(null)はコンパイルエラー。
Class
Packagee
- 全てのクラスはパッケージに属する。
-
packageを記述しないと、無名パッケージに属するものとして扱われる。
Import
-
java.langパッケージはimport不要で利用できる。
継承
-
SuperClass s = new SubClass();とすると、インスタンスメソッド以外は、スーパークラスSuperClassのメンバが呼ばれる。
オーバーライド
- private メソッドは、オーバーライドできない。
- オーバーライドしたメソッドが優先されて使用される。
- オーバーライドする場合は以下のように指定する。
- アノテーション:
@Overrideをつけても良い。 - アクセス修飾子:スーパークラスと同じかそれより広い
- 戻り値:スーパークラスと同じかそのサブクラス
- メソッド名:スーパークラスと同じ
- 引数リスト:スーパークラスと同じ
- アノテーション:
オーバーロード
- オーバーロードされたメソッドの優先順位は以下の通り。
- 引数が完全一致したメソッド
- 暗黙の型変換をした上で引数が完全一致したメソッド
- Boxingした上で引数が完全一致したメソッド
- 可変長引数メソッド
- 可変長メソッド
void method(int... val){}と同じ配列型を持つメソッドvoid method(int[] val){}は定義できない。
instanceof
SubClass instanceof SubClass == trueSubClass instanceof SuperClass == trueSubClass instanceof OtherInterface == false-
SubClass instanceof OtheClassはコンパイルエラー。
Interface
Field
- フィールドは、暗黙的に
public static finalになる。
Method
- メソッドは、暗黙的に
public abstractになる。 - インタフェースの実装クラスは、インタフェースのメソッドと同じスコープを用いること。
Default method
- defaultメソッドは、暗黙的に
public defaultになる。 - defaultメソッドのスコープは
publicのみ。
Static method
- staticメソッドは、暗黙的に
public staticになる。 - defaultメソッドのスコープは
publicまたはprivateのみ。