Gostaria de saber, porque o resultado dessa expressão é = 3 ?
classBanana{intx=1;publicstaticvoidmain(String[]args){intx=2;Bananab=newBanana();b.go();}{x+=x;}// O QUE QUER DIZER ISSO, TIPO UM CONSTRUTOR???voidgo(){++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.
diegofss11
Qual bloco de inicialização? { x+=x; } ??
evertonsilvagomesjav
Qual bloco de inicialização? { x+=x; } ??
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.
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.
AA ta entendi… o {} e como se fosse um construtor entao… eh chamado so na hora da inicialização ne!
Nao tem isso de inicia o main x = 2. Quando Banana e instanciado que x = 2.
evertonsilvagomesjav
Qual bloco de inicialização? { x+=x; } ??
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.
AA ta entendi… o {} e como se fosse um construtor entao… eh chamado so na hora da inicialização ne!
Vlw feras!
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.
diegofss11
Qual bloco de inicialização? { x+=x; } ??
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.
AA ta entendi… o {} e como se fosse um construtor entao… eh chamado so na hora da inicialização ne!
Vlw feras!
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.