Dificuldade em entender saída de um programinha básico

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.