5

私は Java がまったく初めてで、なぜ私の静的ブロックが実行されないのか疑問に思っています。

public class Main {

public static void main(String[] args) { 
    Account firstAccount = new Account();  
    firstAccount.balance = 100;
    Account.global = 200;  
    System.out.println("My Balance is : " + firstAccount.balance);
    System.out.println("Global data   : " + Account.global);

    System.out.println("*******************");
    Account secondAccount = new Account();
    System.out.println("Second account balance  :" + secondAccount.balance);
    System.out.println("Second account global   :" + Account.global);

    Account.global=300;
    System.out.println("Second account global   :" + Account.global);

    Account.add();  }
}

public class Account 
{
int balance;        
static int global;  

void display()   
{
System.out.println("Balance     : " + balance);
System.out.println("Global data : " + global);
}

static   // static block
{
    System.out.println("Good Morning Michelle");

}
static void add()  
 {
    System.out.println("Result of 2 + 3 " + (2+3));
    System.out.println("Result of 2+3/4 " + (2+3/4));  
}
public Account() {
    super();
    System.out.println("Constructor");

}
}

私の出力は次のとおりです。

Good Morning Michelle
Constructor
My Balance is : 100
Global data   : 200
*******************
Constructor
Second account balance  :0
Second account global   :200
Second account global   :300
Result of 2 + 3 5
Result of 2+3/4 2

2つ目のアカウントで入ったときに「おはようミッシェル」が表示されなかった理由が知りたいです。

私が行った調査から、この静的ブロックは、クラスが呼び出されるたびに実行される必要があります (新しいアカウント)。

本当に初心者の質問で申し訳ありません。ミシェル

4

2 に答える 2

8

「おはようミシェル」を出力する静的ブロックは静的初期化子です。それらは、そのクラスが最初に参照されたときに、クラスごとに 1 回だけ実行されます。クラスの 2 番目のインスタンスを作成しても、再度実行されることはありません。

于 2013-05-01T19:26:45.297 に答える
2

静的ブロックは、クラスが初めてロードされるときに実行されます。これが、出力が 1 回表示される理由です。詳細については、こちらをご覧ください: 静的​​ブロックについて

于 2013-05-01T19:28:29.997 に答える