私はJavaの本質について混乱しています。開始時の静的参照変数とインスタンス参照変数の違いは何ですか?
public class InitItself1 {
public InitItself1(){}
private InitItself1 me = new InitItself1();
}
もちろん、上記のクラスのインスタンスを作成するときにStackOverFlowErrorが発生することはわかっています。上記のクラスは、変数 "me"の開始のために再帰的に開始されます。
しかし、当然のことながら
public class InitItself2 {
public InitItself2(){}
private static InitItself2 me = new InitItself2();
}
上記のクラスの結果、 "InitItself2は" "InitItself1"、前クラスに異なっています。これは正常に動作し、エラーは発生しませんでした。私が知っているように、静的変数とブロックがロードされているクラスでは、静的変数の開始と静的ブロックの実行が実行されます。
私が混乱させているのは、両方のクラスの変数「InitItself1」と「InitItself2」が開始されている変数と同じであると思います。両方のクラスを開始する際に「再帰的に開始する」ことが起こると考えられます。
私の欠点は何ですか? よろしくお願いします。 ありがとう:)
を与えるあなたは、静的変数が唯一の代わりにインスタンスごとの、クラスごとに一度初期化されているという事実について混乱はありますか? – Kayaman
カヤマン、そうではありません。私は、開始静的変数がどのように実行されるのか混乱しています。 – ParkCheolu
通常の方法で、クラスがロードされるとき。 – Kayaman