アプリ版:「スタンプのみでお礼する」機能のリリースについて

JAVA初心者です、宜しくお願いします。

Staticについて質問します。

ある本には、「static変数の初期化方法は、変数の初期化と同じステートメントで実行する方法と、JVMによってクラスがロードされるときに実行される特別なコードブロックを作成して変数を初期化する方法があります」とかかれていました。

・ 「変数の初期化と同じステートメントで実行する方法」と「クラスがロードされ
るときに初期化する方法」とは、どのように違うのでしょうか。
  クラスがロードされる時とはどのような時なのでしょうか。

・ 「変数の初期化と同じステートメントで実行する方法」については通常の方法な
ので理解できるのですが、「クラスがロードされるときに初期化する方法」を行う
と、どのようなメリットがあるのでしょうか。
  何故このような方法があるのでしょうか。

以上、宜しくお願いします。

A 回答 (2件)

> 「変数の初期化と同じステートメントで実行する方法」と「クラスがロードされるときに初期化する方法」とは、どのように違うのでしょうか。



下の二つのような単純な例であれば、javacでコンパイルした結果は全く同じです。どちらで書くかは好みの問題。

public class A {
public static int x=1;
}

public class A {
public static int x;
static { x=1; }
}

下の書き方だと、変数の初期化以外のコード(途中でprintln()するとか、条件によって分岐するとか)を混ぜて書くことができます。
    • good
    • 0

メリットかどうかわかりませんが、


>「クラスがロードされるときに初期化する方法」
この方法でないと初期化できないのでしょう。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!