>Seguinte, não se testa igualdade de cadeias (strings) usando "==". Se
>você perguntar a == b (onde a e b são tipo String) o compilador
>comparará
>as referências (a e b fazem referência ao mesmo objeto) ou seja apontam
>para o mesmo lugar? Se eu crie a = "abc" e passei b valendo "abc" para
>um método, é claro que estes "abc" estão "guardados" em distintas
>posições
>logo a != b mesmo ambos valendo "abc". E isso vale pra qualquer outra
>comparação. Para testar objetos, use o método .equal.
>(a única excessão aparente é quando se cria dentro de um mesmo método
>cadeias valendo o mesmo valor, então java "usa" a mesma atribuição e
>sim vale a==b!)
Hum, vc fez bem em dizer aparente... Teste este codigo aih...
Strings.java
-------------------------------------------------------------
public class Strings {
public static void main(String[] args) {
String a = "abc";
String b = "abc";
a = a.intern();
b = b.intern();
System.out.println(a==b);
}
}
Vc vai ver q a==b, e em nenhum momento eu fiz a =b ou a = b = "abc". Essa
magica do intern eh especialmente util qdo vc precisa comparar uma longa
sequencia de Strings uma com a outra. Uma comparacao com = eh muuuito mais
rapida do q chamar o metodo equals().
Mas vc deu uma boa explicacao :-)
>Até
>
>Cláudio Max
----------------------------------------------------
Michael Nascimento Santos
Sun Certified Programmer for the Java 2 Platform
Analista/Consultor
Moderador SouJava - www.soujava.org.br
CPM Sistemas - www.cpm.com.br
_________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com.
------------------------------ LISTA SOUJAVA ----------------------------
http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------