public class StaticTest {
public static int k = 0;
public static StaticTest t1 = new StaticTest("t1");
public static StaticTest t2 = new StaticTest("t2");
public static int i = print("i");
public static int n = 99;
public int j = print("j");
{
print("构造块");
}
static {
print("静态块");
}
public StaticTest(String str) {
System.out.println((++k) + ":" + str + " i=" + i + " n=" + n + " this:" + this);
++n;
++i;
}
public static int print(String str) {
System.out.println((++k) + ":" + str + " i=" + i + " n=" + n);
++i;
return ++n;
}
public static void main(String[] args) {
new StaticTest("init");
}
}
コードの静的ブロックを呼び出すために、ソースコードを必要としない、私は>>静的変数である、コードの静的ブロックをクラスのロード順序を知っていました私を混乱.what >>メンバ変数>>コード>>地殻方法の地殻ブロックであることが確認された場合なぜ負荷の静的変数のこのタイプは、上記のように
パブリック静的StaticTestさt1 =新しいStaticTest( "T1")。走っていないが、
、コードの静的ブロック(が静的{ プリント( "静态块")})理由、実行
public int j = print( "j");
?それに何が起こったのですか?あなたに何か教えていただければ幸いです。
静的変数が初期化されてライン9を与える1つの以上のオブジェクトを作成、呼び出されます。何が起こると思いますか? – Kayaman
このコードを簡略化して具体的に実証しようとしているものを見て、見ている正確な出力を指定できますか? – David
ここに投稿した正確なコードが実際にコンパイルされていることは間違いありませんか? –