• ベストアンサー

Staticイニシャライズについて質問

JAVA初心者です、宜しくお願いします。 Staticについて質問します。 ある本には、「static変数の初期化方法は、変数の初期化と同じステートメントで実行する方法と、JVMによってクラスがロードされるときに実行される特別なコードブロックを作成して変数を初期化する方法があります」とかかれていました。 ・ 「変数の初期化と同じステートメントで実行する方法」と「クラスがロードされ るときに初期化する方法」とは、どのように違うのでしょうか。   クラスがロードされる時とはどのような時なのでしょうか。 ・ 「変数の初期化と同じステートメントで実行する方法」については通常の方法な ので理解できるのですが、「クラスがロードされるときに初期化する方法」を行う と、どのようなメリットがあるのでしょうか。   何故このような方法があるのでしょうか。 以上、宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • salsberry
  • ベストアンサー率69% (495/711)
回答No.2

> 「変数の初期化と同じステートメントで実行する方法」と「クラスがロードされるときに初期化する方法」とは、どのように違うのでしょうか。 下の二つのような単純な例であれば、javacでコンパイルした結果は全く同じです。どちらで書くかは好みの問題。 public class A { public static int x=1; } public class A { public static int x; static { x=1; } } 下の書き方だと、変数の初期化以外のコード(途中でprintln()するとか、条件によって分岐するとか)を混ぜて書くことができます。

その他の回答 (1)

  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.1

メリットかどうかわかりませんが、 >「クラスがロードされるときに初期化する方法」 この方法でないと初期化できないのでしょう。