Jestem całkowicie nowy w Javie i zastanawiam się, dlaczego mój blok statyczny nie jest wykonywany.Statyczne bloki - kiedy są wykonywane
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");
}
}
moje wyjście jest:
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
Chcę wiedzieć dlaczego „Good Morning Michelle” nie została wyświetlona, kiedy wszedł z drugiego rachunku.
Z przeprowadzonych przeze mnie badań ten blok statyczny powinien zostać wykonany za każdym razem, gdy zostanie wywołana klasa (nowe konto).
Przepraszamy za prawdziwe pytanie dla początkujących. Michelle
Blok statyczny wykonuje się jeden raz, wraz z inicjalizacją pól statycznych w klasie. – nhahtdh
Usunięcie słowa "static" spowoduje zmianę go na zwykły blok inicjalizatora, który byłby wykonywany za każdym razem, gdy tworzone jest nowe wystąpienie klasy. –
Spójrz na powiązane pytania, jest mnóstwo informacji na ten temat. –