- ベストアンサー
Staticイニシャライズについて質問
JAVA初心者です、宜しくお願いします。 Staticについて質問します。 ある本には、「static変数の初期化方法は、変数の初期化と同じステートメントで実行する方法と、JVMによってクラスがロードされるときに実行される特別なコードブロックを作成して変数を初期化する方法があります」とかかれていました。 ・ 「変数の初期化と同じステートメントで実行する方法」と「クラスがロードされ るときに初期化する方法」とは、どのように違うのでしょうか。 クラスがロードされる時とはどのような時なのでしょうか。 ・ 「変数の初期化と同じステートメントで実行する方法」については通常の方法な ので理解できるのですが、「クラスがロードされるときに初期化する方法」を行う と、どのようなメリットがあるのでしょうか。 何故このような方法があるのでしょうか。 以上、宜しくお願いします。
- みんなの回答 (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
メリットかどうかわかりませんが、 >「クラスがロードされるときに初期化する方法」 この方法でないと初期化できないのでしょう。