Vai imprimir: “b,c,a”… certo ??? :shock: ai q meda… hehehehehe
Rafael_Nunes
ALguém poderia me explicar o conceito, como funciona, a utilidade de
static {
}
?
ricardolecheta
“Rafael Nunes”:
ALguém poderia me explicar o conceito, como funciona, a utilidade de
static {
}
?
falando claro e direto,
o codigo entre static{ } vai rodar a 1ª vez que a classe for utilizada.
Testet1=newTeste();// o static{} só vai rodar a primeira vezTestet2=newTeste();Testet3=newTeste();
P
Ping
E qual a resposta certa disso mesmo…
Rafael_Nunes
eu acredito que seja “bca”
P
Ping
Porque você acha que o resultado será “bca”?
brlima
Só se a JVM estiver executando errado…rsss…
Mas nao tem segredo:
ao usar a classe para imprimir o conteudo statico do campo “teste”, ele primeiro inicializa os blocos estaticos da classe, carregando teste=“a”, depois executando o bloco onde inicializa nome=“b”, imprime ele ( output: “b” ). Cria uma instancia da classe TesteA, que por sua vez chama o TesteA() que é o contrutor da classe, imprimindo “c” ( output: “b c” ). Depois de todos os blocos inicializados ok, imprime o conteudo do campo estatico teste que é “a” ( output: “b c a” )…
Aeee …
Rafael_Nunes
Vamos lá,
O método main esta imprimindo a a variável de referência “teste” da classe TesteA, porém antes de imprimir está variável, ela irá executar um classloader para carregar a classe TesteA em memóri, ao executar o construtor ela irá executar primeiramente o bloco static (imprimindo “b”), logo depois executará o construtor de TesteA(imprimindo “c”), e somente depois imprimindo a variável teste (a). Logo, “bca”.
Acho que é mais ou menos isso. Não sei se me fiz entender…
P
Ping
Agora deu para entender blz…
elvishr
Uma classe com o bloco:
static{}
faz com que a classe seja a mesma coisa que quando criada com:
static class …
???
Rafael_Nunes
Não, o bloco static é um bloco executado sempre que a classe for carregada pela primeira vez…