JAvaクラスにおける変数の初期化
1494 ワード
一般的な初期化
変数値が有効で1行に書ける場合、変数が初期化されると同時に値を付与できます.変数の初期化には、for文やif文を使用して初期値を得るなど、一定の論理が必要な場合は、この方法は適切ではありません.
クラスには2つの変数があり、クラス変数とインスタンス変数があります.コンストラクション関数で初期化できますが、他の方法でそれぞれ初期化することもできます.以下で説明します.
静的初期ブロック
静的初期高速は、括弧{}に囲まれ、staticによって宣言される.ここでは、一定の論理を実行し、クラス変数を初期化できます.静的初期ブロックが複数ある場合、定義された順序で実行されます.クラスがクラスローダにロードされると、静的変数が初期化されます.
もう1つの静的変数の初期化は、初期化のための静的方法を提供することである.
インスタンス変数の初期化
静的変数と似ていますが、static宣言が少ないだけです.このコードブロックのコードは実際にコンパイラによって各コンストラクタにコピーされるため,異なるコンストラクタにおけるコードブロックの共有が実現される.
もちろん、finalメソッドによりインスタンス変数を初期化することもできます.
非finalメソッドの初期化は、変数の初期化時にエラーが発生します.
参照先:
https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html
public class BedAndBreakfast {
// initialize to 10
public static int capacity = 10;
// initialize to false
private boolean full = false;
}
変数値が有効で1行に書ける場合、変数が初期化されると同時に値を付与できます.変数の初期化には、for文やif文を使用して初期値を得るなど、一定の論理が必要な場合は、この方法は適切ではありません.
クラスには2つの変数があり、クラス変数とインスタンス変数があります.コンストラクション関数で初期化できますが、他の方法でそれぞれ初期化することもできます.以下で説明します.
静的初期ブロック
static {
// whatever code is needed for initialization goes here
}
静的初期高速は、括弧{}に囲まれ、staticによって宣言される.ここでは、一定の論理を実行し、クラス変数を初期化できます.静的初期ブロックが複数ある場合、定義された順序で実行されます.クラスがクラスローダにロードされると、静的変数が初期化されます.
もう1つの静的変数の初期化は、初期化のための静的方法を提供することである.
class Whatever {
public static varType myVar = initializeClassVariable();
private static varType initializeClassVariable() {
// initialization code goes here
}
}
インスタンス変数の初期化
静的変数と似ていますが、static宣言が少ないだけです.このコードブロックのコードは実際にコンパイラによって各コンストラクタにコピーされるため,異なるコンストラクタにおけるコードブロックの共有が実現される.
{
// whatever code is needed for initialization goes here
}
もちろん、finalメソッドによりインスタンス変数を初期化することもできます.
class Whatever {
private varType myVar = initializeInstanceVariable();
protected final varType initializeInstanceVariable() {
// initialization code goes here
}
}
非finalメソッドの初期化は、変数の初期化時にエラーが発生します.
参照先:
https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html