Java非静的メンバー変数のデッドサイクル(詳細解)


1.非静的メンバー変数
メンバー変数が非静的メンバー変数であり、現在のクラスを実装すると、デッドサイクルが発生します。
例:

public class ConstructorCls {
 private ConstructorCls obj=new ConstructorCls();
}

public class TestC {

 public static void main(String[] args) {
  ConstructorCls c =new ConstructorCls();
 }
}
結果:

Exception in thread "main" java.lang.StackOverflowError
at com.ConstructorCls.<init>(ConstructorCls.java:7)
at com.ConstructorCls.<init>(ConstructorCls.java:7)
at com.ConstructorCls.<init>(ConstructorCls.java:7)
分析:new Controtor ClasがControtor Clasを実例化する時に、後はこの種類のメンバーobjを初期化します。Objはまた自分の所属するクラスを実列化します。このままStockOverflowErrまで続けます。
2.スタティックメンバー変数
静的メンバー変数はクラスに属しています。デッドサイクルは発生しません。
たとえば:

public class ConstructorCls {
 private static ConstructorCls obj=new ConstructorCls(); 
}

public class TestC {

 public static void main(String[] args) {
  ConstructorCls c =new ConstructorCls();
 }
}
分析:new ControuctouctoClas()の場合、まずCostructor ClasをJVMにカットし、ロード時にこの種類の静的なメンバーを初期化し(ロード時に一度だけ初期化する)、Objペア像を初期化し、newのCostructor Clasはここの一つのポイントはこの静的な状態のメンバーがクラスに属しています。
以上は、小编がもたらしたJava非静的メンバー変数の死のサイクル(详しい解)のすべての内容です。お気に入りください。
もし皆さんがもっと多くのゲーム活動とゲーム攻略を知りたいなら、引き続きこのサイトに注目してください。本サイトの小編は第一時間に皆さんに最高の鑑賞、最も面白い、最も新鮮なゲーム情報を持ってきます。もっと素晴らしい内容はjb 51ゲームチャンネルにあります。