Pessoal não entendi como o bloco de inicialização funcionao… não entendi bloco static o que eles fazem se alguem poder me dar um luz eu agradeço !!! :oops:
Dúvida com bloco de Inicialização!
2 Respostas
O “Bloco de Inicialização” é algo que é executado pelo construtor antes de ele entrar, e o “bloco static” é executado quando a classe é carregada pela primeira vez. São coisas um pouquinho diferentes.
http://java.sun.com/docs/books/tutorial/java/javaOO/initial.html
Vamos dar um exemplo do “bloco de inicialização”. O seguinte código:
class Cliente {
// Construtor
public Cliente() {
System.out.println ("Cliente Z");
}
// Bloco de inicialização
{
System.out.println ("Cliente X");
}
}
é equivalente a este:
class Cliente {
// Construtor
public Cliente() {
System.out.println ("Cliente X"); // do bloco de inicialização
System.out.println ("Cliente Z"); // do próprio construtor
}
}
Exemplo do “bloco static”. O seguinte código:
class Cliente {
static int x = 10;
static int z;
// Bloco static
static {
z = 20;
}
}
equivale a este:
class Cliente {
static int x = 10;
static int z = 20; // veja que isto era inicializado pelo "bloco static".
}
Se ambas as coisas são equivalentes, por que é que existe o tal bloco static? É que dentro dele você pode fazer coisas como tratar um “try/catch” que você não pode fazer em uma inicialização tradicional.
Exemplo:
class Cliente {
static int x = 10;
static int z;
// Bloco static
static {
try {
z = Integer.parseInt ("23");
} catch (NumberFormatException ex) {
z = 42;
}
}
}
blocos de inicialização como o static são blocos de código que pertencem à classe e não a um objeto específico. São executados uma única vez, quando a classe é carregada pelo class loader da JVM.