Gostaria de saber, porque o resultado dessa expressão é = 3 ?
class Banana {
int x = 1;
public static void main(String [] args) {
int x = 2;
Banana b = new Banana();
b.go();
}
{ x += x; } // O QUE QUER DIZER ISSO, TIPO UM CONSTRUTOR???
void go(){
++x;
System.out.println(x);
}
}
A Variávelx começa com 1, depois executa o bloco de inicialização, incrementa mais um, e fica com 2. Por fim chama o método go() que adiciona mais 1, e resultado é 3.
Isso toda vez que vc instancia sua classe os blocos de inicializações rodam antes do construtor, entao quando vc fez: Banana b = new Banana() o bloco { x+=x; } é executado e a variavel “x” recebe +1 e fica 2. Depois b.go() é executado e “x” recebe +1 novamente e exibi 3.
eu vejo diferente o.õ
x = 1;
inicia o main
x = 2;
Banana b = new Banana();
entao instancia b e ele tem o valor de x = 2
em seguida chama o b.go que incrementa 1 em x que fica com 3
Isso toda vez que vc instancia sua classe os blocos de inicializações rodam antes do construtor, entao quando vc fez: Banana b = new Banana() o bloco { x+=x; } é executado e a variavel “x” recebe +1 e fica 2. Depois b.go() é executado e “x” recebe +1 novamente e exibi 3.
[/quote]
AA ta entendi… o {} e como se fosse um construtor entao… eh chamado so na hora da inicialização ne!
[quote=VictorMatuk]eu vejo diferente o.õ
x = 1;
inicia o main
x = 2;
Banana b = new Banana();
entao instancia b e ele tem o valor de x = 2
em seguida chama o b.go que incrementa 1 em x que fica com 3[/quote]
Nao tem isso de inicia o main x = 2. Quando Banana e instanciado que x = 2.
Isso toda vez que vc instancia sua classe os blocos de inicializações rodam antes do construtor, entao quando vc fez: Banana b = new Banana() o bloco { x+=x; } é executado e a variavel “x” recebe +1 e fica 2. Depois b.go() é executado e “x” recebe +1 novamente e exibi 3.
[/quote]
AA ta entendi… o {} e como se fosse um construtor entao… eh chamado so na hora da inicialização ne!
Vlw feras![/quote]
Sim so lembre que ele roda ANTES do construtor se vc tivesse algum codigo no corpo do seu construtor o bloco de inicializaçao iria executar antes do codigo do seu construtor.
Isso toda vez que vc instancia sua classe os blocos de inicializações rodam antes do construtor, entao quando vc fez: Banana b = new Banana() o bloco { x+=x; } é executado e a variavel “x” recebe +1 e fica 2. Depois b.go() é executado e “x” recebe +1 novamente e exibi 3.
[/quote]
AA ta entendi… o {} e como se fosse um construtor entao… eh chamado so na hora da inicialização ne!
Vlw feras![/quote]
Sim so lembre que ele roda ANTES do construtor se vc tivesse algum codigo no corpo do seu construtor o bloco de inicializaçao iria executar antes do codigo do seu construtor.[/quote]