Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Dúvida no Ex. 7 da Aula 6 - Aplique modificadores de acesso

Olá! Será que alguém poderia explicar porque no código abaixo faz a impressão do valor considerando a variável final?

class B{
    static int bs=0;
    final int b = ++bs;
    private B() {}
    static B b() { return new B(); }
}
class A {
    public static void main(String[] args) {
        System.out.println(B.b().b);
    }
}
4 respostas

Leandro,

vamos la , o resultado desta resposta é 1

o que está acontecendo , a variável bs é igual 0 , ok !

ja variável b está recebendo a o pré incremento da variável bs , que seria 1 ;

após isso a variávell final não será modificada .

espero ter ajudado , Bons Estudos

Oi Celso,

deixe me ver se eu compreendi, quando eu chamo B.b() eu entro no método static B b() e como esse método cria um novo objeto de B através da linha de comando new B e minha chamada foi B.b().b esse último "b" e quem está chamado a minha variável final?

Obrigado pelo breve retorno.

solução!

Leandro,

esse ultimo b , é sua variável na classe B

o que está acontecendo , ele entra no método estatico e cria um objeto do tipo B e chama a variável b , que vale 1

Celso, agora ficou claro. Obrigado.