O Felipe está certo.
Só dando umas informações extras:

A menos que vc queira saber se duas referências apontam para o mesmo objeto
(same), nunca use ==. Para saber se dois objetos são iguais (equals) use
sempre o método equals(Object).

Existe uma diferença entre ser o mesmo objeto e serem objetos iguais.
Obviamente, um mesmo objeto é sempre igual a ele mesmo, mas dois objetos
podem ser iguais.

Isto é válido para objetos, como String, Integer, Character, vetores
("int[]", "String[]"), etc...
(sim, vetores, sejam de referências para objetos ou de tipos primitivos são
objetos)
(note que Integer é uma classe que vc pode instanciar com "new Integer(57);"
e representa o int 57. Todos os tipos tem suas classes associadas, com nome
completo (Character para char) e seguindo a convenção de letra maiúscula no
início (Double para double).

Para tipos primitivos como int, char, double, etc, não há métodos, pois não
são objetos. == serve para verificar se são iguais.


Vc pode notar que o comportamento de String é um pouco diferente.

String a1 = "a";
String a2 = "a";

a1 == a2 vai dar true. Isso pq a JVM não cria duas strings iguais, a não ser
que vc a obrigue:


String a1 = "a";
String a2 = new String("a");
a1 == a2 vai dar false.

O mesmo vale quando vc lê a string do input padrão ou a recebe pela rede. É
criada uma nova instância na memória, ainda que haja outra igual.

Isto é uma otimização, para não se gastar mto espaço em memória.
Nesta situação:

String a1 = "a";
String a2 = "a";

String a3 = a2 + "b";

É criada uma nova string "ab" em memória. a2 continua referenciando "a",
juntamente com a1.

Se vcs olharem os métodos de manipulação em String (replace, substring, etc)
verão que eles retornam uma outra string modificada, o objeto sobre o qual
se opera não é modificado.
Strings em Java não são modificadas, são constantes, justamente para que se
possa fazer esta otimização.
Do contrário, ao modificar-se o objeto referenciado por a2, modificaria-se
também o referenciado por a1, diferentemente do comportamento esperado, já
que é de se supor que sejam dois objetos diferentes.

Para strings dinâmicas, utiliza-se StringBuilder.

Abraço!

Peter P. Lupo
Undergraduating in Computer Science DCC/UFRJ
MPS.BR Authorized Implementation Practitioner
Sun Certified Java Associate
http://pplupo.googlepages.com/
Cell. +55 (021) 81742487


2009/4/4 Felipe Costa <[email protected]>

> Nesse caso como ambos são Strings voce está comparando as referências e não
> conteudo. Nesse caso, utilize o método equals() de string:
>
> ...
>
> if(nome.equals(i.getNome()){
>
> ....
>
>
> --
> Abraços,
> Felipe H.
>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Comp 
2 - Geral" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/comp2-geral?hl=en
-~----------~----~----~----~------~----~------~--~---

Responder a