O que faz esse static dentro da classe?
[code] public class Teste{
static{
}
}[/code]
E qual é a diferença disso pra um construtor de classe?
O que faz esse static dentro da classe?
[code] public class Teste{
static{
}
}[/code]
E qual é a diferença disso pra um construtor de classe?
Isso aí (bloco estático) é executado quando a classe é carregada. É bem diferente de um construtor, que é executado quando um objeto (uma instância) é criado.
O bloco static é executado uma única vez quando JVM
faz a primeira chamada a sua classe.
Creio que a principal diferença é que o bloco static funciona como um método sem argumentos e nem tipos de retorno, ao contrário dos construtores.
Valews pessoal
Esse bloco “static” existe principalmente por causa do seguinte problema: imagine que você tem uma variável estática, mas cujo conteúdo é difícil de inicializar (por exemplo, durante a inicialização pode ser que seja gerada uma Exception.), e você não quer criar uma função estática só para inicializar a tal variável. Você pode mover essa inicialização para o bloco “static”. Por exemplo:
import java.awt.Font;
class Teste {
static Font minhaFonte; //
static {
try {
minhaFonte = Font.createFont ("bla.ttf", Font.BOLD, 10.5f);
} catch (.....) {
....
}
}
}