Dúvida de Iniciante

Olá galera, como podem ver começei hoje no forum, e por sinal gostei muito…
Bom estou cursando análise e desenvolvimento de sistemas (3 semestre) …
e me interessei muito por java, onde comprei livros e estou começando a estudar…

e nesse livro ( Use a Cabeça, JAVA )
segue um exemplo … que é :

[code]public class Echo {

int count = 0 ;

void hello ()
{
System.out.println (“Helloooo…”);
}
}
[/code]

Teste !

public class EchoTesteDrive {

public static void main ( String [] args ){

Echo e1 = new Echo () ;
Echo e2 = new Echo (); //resposta correta

//Echo e2 = e1; //resposta adicional

int x = 0 ;

while ( x < 4 ) {
e1.hello () ;
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);
}
}

Beleza, entendi perfeitamente o problema e tudo mais, fiz até o teste de mesa e ocorreu tudo certo ( = o java )
Helloooo…
Helloooo…
Helloooo…
Helloooo…
10
(resposta)

e tem uma pergunta adicional que seria a seguinte …
Se a ultima linha da saída fosse 24 em vez de 10, como voce concluiria o quebra cabeça…
então li a resposta e constatei que era a mesma em que está o comentário na classe Teste! (EchoTestDrive)
“Echo e2 = e1 ;” ( LINHA 8 )
alguem poderia me ajudar a explicar o que aconteceu ?
as váriaveis já não são iguais ?
não consigo entender, obrigado!
abraços.
Angelo

cara já que vc é novo aqui e pra não causar problema à si mesmo olhe

http://www.guj.com.br/java/50115-voce-e-novo-no-guj-vai-criar-um-topico-e-colar-seu-codigo-fonte-leia-aqui-antes-por-favor/7

COLOCA O CODIGO ENTRE a tags code
Ex:

 
aquii

desculpem hehe
agora podem me ajudar ?

É que quando voce usa o

e2 = e1 

Voce nao esta criando um novo objetos, apenas apontando o objeto E2 para o E1 ou seja, se voce muda o e1 o valor do E2 tambem muda, porque ele é apenas uma referencia…

E na linha

e2.count = e2.count + e1.count;

como o e1 na primeira passada é 2 voce esta fazendo 2 mais 2, pois o e2 esta apontando para o e1 que tem seu count definido para e1.

Agora quando voce faz

Echo e2 = new Echo();

voce cria um novo objeto e quando faz

e2.count = e2.count + e1.count;

na primeira vez que ele passa o count do e2 é 0 pois voce nao definiu nenhum valor para ele, entao sera 0 + 2 (e1).

Ficou mais claro agora?

[quote=luyz]É que quando voce usa o

e2 = e1 

Voce nao esta criando um novo objetos, apenas apontando o objeto E2 para o E1 ou seja, se voce muda o e1 o valor do E2 tambem muda, porque ele é apenas uma referencia…

E na linha

e2.count = e2.count + e1.count;

como o e1 na primeira passada é 2 voce esta fazendo 2 mais 2, pois o e2 esta apontando para o e1 que tem seu count definido para e1.

Agora quando voce faz

Echo e2 = new Echo();

voce cria um novo objeto e quando faz

e2.count = e2.count + e1.count;

na primeira vez que ele passa o count do e2 é 0 pois voce nao definiu nenhum valor para ele, entao sera 0 + 2 (e1).

Ficou mais claro agora?
[/quote]

Cara, MUITO obrigado pela humildade em me ajudar, entendi como funciona sim !!
tamo ai pro que precisar, abraço !!

Não precisa agradecer, seja bem vindo ao forum e qualquer duvida só postar

:smiley: