(RESOLVIDO) Duvida na execução de blocos statics

5 respostas
GabrielCardelli

Salve! Galera ..

Tô com uma duvida cruel...

Os blocos estáticos são os primeiros a serem executados numa classe? :D

Por que essa droga aqui num da erro então?

public class TesteTeste 
{
	static int[] x = new int[4];
	static{ x[3] = 5; };
	
	public static void main(String[] args) 
	{
		
		TesteTeste a = new TesteTeste();
		
		System.out.println( a.x[3] );
		
	}
		
	
}

Abraço galera! Obrigado desde já

5 Respostas

robsonrod

Sim, os blocos estáticos são executados quando a classe é carregada. E a ordem que os blocos de inicialização aparecem é importante, pois, serão executados nessa ordem. Segue a ordem de inicialização:

1º - Blocos Estaticos
2º - Blocos não estaticos
3º - Construtores

O codigo ai compila, por que vc está declarando um array de 4 elementos e atribuindo à posição 3 (último indice) desse array o valor de 3. Nesse caso ai lançaria uma exceção se você tentasse atribuir um valor a um indice inexistente, como 4.

Espero ter ajudado.

maschiojv

Não entendi muito bem a tua duvida, que tipo de erro você estava esperando?

rodrigo.bossini
GabrielCardelli:
Salve! Galera ..

Tô com uma duvida cruel...

Os blocos estáticos são os primeiros a serem executados numa classe? :D

Por que essa droga aqui num da erro então?

public class TesteTeste 
{
	static int[] x = new int[4];
	static{ x[3] = 5; };
	
	public static void main(String[] args) 
	{
		
		TesteTeste a = new TesteTeste();
		
		System.out.println( a.x[3] );
		
	}
		
	
}

Abraço galera! Obrigado desde já

Eu não entendi porque você esperava que esse código desse erro...

ViniGodoy

A inicialização inline (com o new na mesma linha da declaração do atributo) ocorre ainda antes dos blocos estáticos.

GabrielCardelli

obrigado… vlw vinigodoy isso que eu n tava entendendo…

obrg geral ae pelos posts

abrço :smiley: :smiley: :smiley: :smiley: :smiley: :smiley: :smiley: :smiley: :smiley: :smiley:

Criado 1 de maio de 2009
Ultima resposta 1 de mai. de 2009
Respostas 5
Participantes 5