My Java環境
- java11
static
-
static
なフィールドは、インスタンスを生成しなくても使用できる -
クラス名.フィールド名
または、インスタンス生成後にインスタンス名.フィールド名
で使用する -
static
なメソッドからstatic
ではないフィールドやメソッドにはアクセスできない(static
なメソッドからはstatic
なフィールドやメソッドにしかアクセスできない) -
static
ではないメソッドからstatic
なフィールドやメソッドにはアクセスできる
メソッドの戻り値
- メソッドの戻り値は
戻り値と同じ型
または互換性のある型
である必要がある。
可変長引数
- 引数の数を自由に変更できる引数のこと。JVMによって配列に置き換えられる。
- 引数の型の直後にピリオド3つ
...
をつけて宣言する。
public static void main(String... args) {
// 処理
}
- 可変長引数を最後の引数にする必要がある。
public void method(String value, String... args) { } // OK
public void method(String... args, String value) { } // NG
メソッドのオーバーロード
- メソッドの名前が同じ、引数が異なる(引数の数・型・並び順)
コンストラクタ
- メソッド名をクラス名と同じにすること
- 戻り値は記述できない
-
new
したときにしか呼ばれない、呼べない - アクセス修飾子はなんでもOK
コンストラクタと初期化子{}
初期化子{}
は、クラスブロック直下に記述する。コンストラクタが実行される前に実行される。
public class Test {
{
// 初期化処理
}
}
static
初期化子もある。クラスがロードされたときに実行される。
public class Test {
static {
// 初期化処理
}
}
- デフォルトコンストラクタはコンストラクタを1つも定義しない場合に追加される。
- コンストラクタからオーバーロードされた別のコンストラクタを呼ぶときは
this(...)
を使用するが、使用する際は処理の1番最初に記述する必要がある。
修飾子
- public : すべてのクラスからアクセス可能
- protected : 同じパッケージと、継承しているサブクラスからアクセス可能
- (なし) : 同じパッケージのクラスからアクセス可能
- private : クラス内からのみアクセス可能
メソッドの引数
- プリミティブ型をメソッドの引数に指定した場合は、メソッドにはコピーが渡される(メソッド内で値が変更されても、呼び出し元の値には影響しない。)
- オブジェクト型をメソッドの引数に指定した場合は、メソッドにはインスタンスの参照(リンク)が渡される。(メソッド内で値が変更されたら、呼び出し元の値も変わる。)