Isso é um método? É oq? nunca vi isso antes

9 respostas
igor_ks

Estudando pra certificacao, me deparei com um codigo exemplo do livro da Kathy

public class Layout {

	static int s = 343;
	int x;
	
	[b]{
		x = 7;
		int x2 = 5;
	}[/b]
	
	Layout() {
		x += 8;
		int x3 = 6;
	}
	
	void doStuff() {
		int y = 0;
		for (int z = 0; z < 4; z++) {
			y += z + x;
		}
	}

	
}

{
x = 7;
int x2 = 5;
}

Alguem sabe me explica oq é isso em negrito?
Nunca vi metodo sem declarar nome nem nada..

9 Respostas

G
igor_ks:
Estudando pra certificacao, me deparei com um codigo exemplo do livro da Kathy
public class Layout {

	static int s = 343;
	int x;
	
	[b]{
		x = 7;
		int x2 = 5;
	}[/b]
	
	Layout() {
		x += 8;
		int x3 = 6;
	}
	
	void doStuff() {
		int y = 0;
		for (int z = 0; z < 4; z++) {
			y += z + x;
		}
	}

	
}

{
x = 7;
int x2 = 5;
}

Alguem sabe me explica oq é isso em negrito?
Nunca vi metodo sem declarar nome nem nada..

Olá, este é um construtor de uma classe:

public class Construtor {
	private int teste = -1;
	
	{
		teste = 9;
	}
	
	public int getTeste() {
		return teste;
	}
}

faça um teste chame este metodo getTeste() para vc ver o que acontece

rodolfox109

Isso se chama bloco de inicialização!

Dá uma olhada : http://www.guj.com.br/java/64669-duvida-com-bloco-de-inicializacao-

igor_ks

Nossa, que estranho…

isso nao substituiria o construtor padrao…
mas tb nao é overload, pq nao tem passagem a mais de parametros, qual o nome disso?

fiz um teste da seguinte maneira

public class Layout {
        {
		System.out.println("construtor 1");
	}
	
	Layout() {
		System.out.println("construtor 2");
	}
	
	{
		System.out.println("construtor 3");
	}
}

e qual o resultado disso?
construtor 1
construtor 3
construtor 2

Estranho ein..
2 constutores padrao nao pode..
mas pode N construtores desse tipo ai..
igor_ks

opa, valeu aos 2 pela resposta, o rodolfo respondeu enqto estava digitando o topico

rodolfox109

Eles rodam quando a classe é carregada pela primeira vez ( no caso do static ) ou quando uma instância é criada ( no caso, o seu exemplo!)

Se você estiver estudando pelo livro da Kathy, dê uma olhada na página 135.

Lembro que quando eu fiz a prova ocjp caiu uma questão envolvendo blocos. Fique bem atento pois eles podem estar em ‘qualquer lugar’ na classe hehe (pegadinhas da prova)

Flws… boa sorte nos estudos

Fexx

Eles rodam quando a classe é carregada pela primeira vez ( no caso do static ) ou quando uma instância é criada ( no caso, o seu exemplo!)

Se você estiver estudando pelo livro da Kathy, dê uma olhada na página 135.

Lembro que quando eu fiz a prova ocjp caiu uma questão envolvendo blocos. Fique bem atento pois eles podem estar em ‘qualquer lugar’ na classe hehe (pegadinhas da prova)

Flws… boa sorte nos estudos

Exatamente, e é carregando primeiro.

douglaskd

sistemas comerciais usam isso ?

Andersonrms

Só uma dúvida:
Nesse código, x2 e x3 são variáveis de instância ou local?

ribclauport

Andersonrms
Só uma dúvida:
Nesse código, x2 e x3 são variáveis de instância ou local?

static int s = 343;  
    int x;  
      
    {  
        x = 7;  
        int x2 = 5;  
    } 
      
    Layout() {  
        x += 8;  
        int x3 = 6;  
    }

De acordo com o livro da Katy Sierra na página 115,

x2 é uma variável de bloco de inicialização, um tipo de variável local.
x3 é uma variável de construtor, um tipo de variavel local.

As variáveis de bloco vão permanecer vivas enquanto o bloco de código estiver sendo executado.

É bom lembrar que variáveis declaradas em um comando “for” também são consideradas variaveis de bloco.

Criado 13 de março de 2012
Ultima resposta 13 de mar. de 2012
Respostas 9
Participantes 7