Melhor resposta
bloco estático {}
- blocos estáticos são usados para inicializar os dados estáticos na classe, ele cria recursos estáticos.
- blocos estáticos são executados apenas uma vez, assim que a classe é carregada na memória.
- blocos estáticos são executados antes do método main () pelo carregador JavaClass.
- Uma classe pode ter vários blocos estáticos, que serão executados na mesma sequência em que foram gravados no programa .
- estático {}, é executado toda vez, quando a classe carrega.
- Não podemos escrever blocos estáticos dentro de um método estático e um método não estático (blocos estáticos são escritos separadamente )
- Apenas variáveis estáticas podem ser acessíveis dentro de um bloco estático.
- Podemos chamar um método estático dentro de um bloco estático.
- Não podemos criar nenhum método dentro de bloco estático.
- Variáveis não estáticas e métodos não estáticos não podem ser acessíveis dentro de um bloco estático.
- Se você tentar acessar variáveis ou métodos não estáticos dentro de um bloco estático, ocorrerá um erro de tempo de compilação,
Não é possível fazer uma referência estática ao método não estático wow () do tipo staticblock
Considere o exemplo abaixo de bloco estático.
- Há um bloco estático {} dentro de uma classe.
- Existem duas variáveis estáticas “ss, j” declaradas, nas quais são acessadas dentro do método estático e no bloco estático
- Um método estático disp () é escrito e imprime a variável estática dentro dele.
- Este método é chamado dentro de um bloco estático {}
- variáveis estáticas e métodos estáticos podem ser acessível apenas dentro de um bloco estático
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) {
}
}
verifique a saída
o bloco estático é invocado com o valor8
runnin bloco estático antes do método principal
O valor dentro do método estático é 23
Resposta
Os blocos estáticos também são chamados de Blocos de inicialização estáticos , uma classe pode ter qualquer número de blocos estáticos e eles podem aparecer em qualquer lugar dentro da classe java.
Este bloco é executado quando a classe está lo aded na memória. O sistema de tempo de execução Java garante que os blocos de inicialização estáticos sejam chamados na ordem em que aparecem no código-fonte.
Exemplo:
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");
}
}
Resultado:
Static block - 1
Static block - 2
Static block - 3
Main Method