Najlepsza odpowiedź
blok statyczny {}
- bloki statyczne służą do inicjalizacji statycznych danych w klasie, tworzy statyczne zasoby.
 - bloki statyczne są wykonywane tylko raz, gdy tylko klasa zostanie załadowana do pamięci.
 - bloki statyczne są wykonywane przed metodą main () przez program ładujący JavaClass.
 - Klasa może mieć wiele bloków statycznych, które będą wykonywane w tej samej kolejności, w jakiej zostały zapisane w programie .
 - statyczny {}, jest wykonywany za każdym razem, gdy klasa się ładuje.
 - Nie możemy pisać bloków statycznych wewnątrz metody statycznej i metody niestatycznej (bloki statyczne są zapisywane osobno )
 - Tylko zmienne statyczne mogą być dostępne wewnątrz bloku statycznego.
 - Możemy wywołać metodę statyczną wewnątrz bloku statycznego.
 - Nie możemy tworzyć żadnych metod wewnątrz blok statyczny.
 - Zmienne niestatyczne i metody niestatyczne nie mogą być dostępne w pliku blok statyczny.
 - Próba uzyskania dostępu do zmiennych lub metod niestatycznych wewnątrz bloku statycznego powoduje błąd czasu kompilacji,
 
Nie można utworzyć statycznego odwołania do niestatycznej metody wow () z typu staticblock
Rozważ poniższy przykład statycznego bloku.
- W klasie znajduje się jeden blok statyczny {}.
 - Istnieją dwie zadeklarowane zmienne statyczne „ss, j”, w których można uzyskać do nich dostęp wewnątrz metody statycznej oraz w bloku statycznym.
 - Metoda statyczna disp () jest zapisywana i drukuje zmienną statyczną wewnątrz niej.
 - Ta metoda jest wywoływana wewnątrz bloku statycznego {}
 - zmienne statyczne i metody statyczne mogą być dostępne tylko wewnątrz bloku statycznego
 
 public class staticblock { 
   
  static int ss=23; // initialize the static variable with value; 
  public static void disp() { 
  System.out.println("runnin static block before main method"); 
  System.out.println("Value inside static method is "+ss); 
  } 
   
  static int j; 
   
  static // static block 
  { 
  j=8; 
   
  System.out.println("static block is invoked with the value"+j); // access the static variable inside static block 
  disp(); // calling the static method inside static block 
   
  }  
  public static void main(String[] args) { 
   
  } 
   
 } 
sprawdź wyjście
blok statyczny jest wywoływany z wartością8
uruchamiany w bloku statycznym przed metodą główną
Wartość wewnątrz metody statycznej to 23
Odpowiedź
Bloki statyczne są również nazywane Statyczne bloki inicjalizacyjne , klasa może mieć dowolną liczbę bloków statycznych i mogą pojawić się w dowolnym miejscu w klasie java.
Ten blok jest wykonywany, gdy klasa jest lo umieszczone w pamięci. Środowisko wykonawcze Java gwarantuje, że statyczne bloki inicjalizacyjne są wywoływane w kolejności, w jakiej występują w kodzie źródłowym.
Przykład:
 public class Solution{  
  static {  
  System.out.println("Static block - 1");  
  }  
   
  static {  
  System.out.println("Static block - 2");  
  }  
  public static void main(String[] args){  
  System.out.println("Main Method");  
  }  
   
  static {  
  System.out.println("Static block - 3");  
  }  
 }  
Wynik:
 Static block - 1 
 Static block - 2 
 Static block - 3 
 Main Method