Dúvida com bloco de Inicialização!

2 respostas
Raff

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:

2 Respostas

T

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; 
        }
    }
}
cassio

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.

Criado 16 de julho de 2007
Ultima resposta 16 de jul. de 2007
Respostas 2
Participantes 3