Olá !
segue abaixo parte do programa:
.
.
.
Echo e1 = new Echo();
Echo e2 = e1;
int x = 0;
while(x<4)
{
e1.count = e1.count +1;
if(x==3)
{
e2.count = e2.count + 1;
}
if(x>0)
{
e2.count = e2.count + e1.count;
}
x = x+1;
}
System.out.println(e2.count);
.
.
.
Eu nao estou conseguindo entender porque a saída é 24. Poderiam me ajudar ?
abraços.
Não dá pra saber, o que é esse atributo count, e qual é o valor inicial dele? Tem mais alguma coisa no programa que você não colocou ai ?
Bem… supondo que seja 0… veja:
Echo e1 = new Echo();
Echo e2 = e1; // isso aqui é o segredo
Veja bem, quando voce faz Echo e2 = e1;
você está dizendo que a variável e2 é a mesma que e1, isso é, elas referenciam o mesmo objeto, mas apenas por variáveis diferentes… e quando você altera alguma coisa através de uma das variáveis, lógicamente ela reflete em todas as outras, pois é o mesmo objeto… daí é só fazer os calculos, como se fosse uma unica variavel…
Ao final, vai dar 24 mesmo, partindo do pré-suposto da variavel count ser 0 …
[quote=tutano007]Olá !
segue abaixo parte do programa:
.
.
.
Echo e1 = new Echo();
Echo e2 = e1;
int x = 0;
while(x<4)
{
e1.count = e1.count +1;
if(x==3)
{
e2.count = e2.count + 1;
}
if(x>0)
{
e2.count = e2.count + e1.count;
}
x = x+1;
}
System.out.println(e2.count);
.
.
.
bom, como ele não entra dentro de nenhuma estrutura IF, então ira atribuir +1 para x. E na verificação em que x = 3, ele ainda faz uma atribuição final. Para X ser diferente de 4, teria que ter um break.