Bem, acompanhando essa discussão sobre comparação de strings, surgiu uma dúvida:
 
Apesar de não ser uma boa prática, pois poderia deixar um outro programador confuso, mas eu poderia usar o operador == para realizar uma comparação de strings caso elas fosse declaradas da seguinte forma:
 
String s1 = "qualquer string";
String s2 = "qualquer string";
 
???
 
Pois se o endereço de memória for diferente para as duas strings, então elas não têm o mesmo conteúdo. Certo!?
 
[ ]'s
 
/*
* Rafael de Melo Lima Santini
* BiblioShop - Informatização de Bibliotecas & Software
* Florianópolis - Santa Catarina - Brasil
* Fones: (48) 249-6614 ou 9991-2908
* E-Mail: [EMAIL PROTECTED]
* Website: www.biblioshop.com.br
* ICQ 54152945
*/
----- Original Message -----
Sent: Monday, January 28, 2002 9:15 PM
Subject: Re: [java-list] String

Quantas vezes essa pergunta vai ser respondida?
Com todo o respeito aos colegas, basta dar uma
olhada nas mensagens anteriores da lista ou em
qualquer livro ou apostila introdutória de Java.
 
Quando você usa objetos,  o == compara endereços
de memória. MAS no caso de Strings, para uma
otimização, justificável porque você pode ter strings de
mais de 100000 linhas, SE as Strings tiverem exatemente
o mesmo conteúdo, ambas as variáveis, s1 e s2 apontarão
para o mesmo endereço de memória.
 
Portanto:
String s1 = "qualquer string";
String s2 = "qualquer string";
 
if(s1 == s2){
    System.out.println("Eu não falei? São iguais e ocupam o mesmo espaço na memória");
}
 
Quem tiver dúvida, faça um teste.
 
Agora se você EXPLICITAMENTE declarar:
 
String s1 = new String("qualquer string");
String s2 = new String("qualquer string");
 
if(s1 == s2){
    System.out.println("Isso nunca vai ser impresso na tela.  Quando eu uso o new, estou dizendo que quero dois endereços de memória diferentes e aceito as consequências disso");
}
----- Original Message -----
Sent: Monday, January 28, 2002 11:59 AM
Subject: Re: [java-list] String

o caro companheiro esta correto em afirmar que em java String não é um tipo primitivo e sim um objeto mas se equivocou em dizer que pode-se comparar Strings com == para se comparar Strings usa-se equals exemplo:  if(s1.equals(s2)){} ou if (s1.equalsIgnoreCase(s2))

 porque java no caso da string nao compara as letras e sim o local de memoria onde esta alocado o objeto ou seja nunca s1 vai se igual a s2 dessa maneira if(s1 ==s2)

 



 

>From: "Luiz Reginaldo" <[EMAIL PROTECTED]>
>Reply-To: [EMAIL PROTECTED]
>To: <[EMAIL PROTECTED]>
>Subject: Re: [java-list] String
>Date: Fri, 25 Jan 2002 08:25:28 -0200
>
>Caro José,
>
> O Java trata todas as strings como objetos. Assim sendo, "abc" é
>reconhecido pelo Java como um objeto String anônimo, que armazena o valor
>"abc". Por questão de performance, o Java cria somente um objeto anônimo que
>guarda o valor "abc".
> Na declaração, s1 e s2 são duas declarações de duas variáveis que fazem
>referência a um objeto String. Note que tanto s1 quanto s2 fazem referência
>ao mesmo objeto String anônimo. Assim sendo, if (s1 == s2) verifica se o
>objeto referenciado por s1 é o mesmo referenciado por s2, o que é verdade!
>:)
>
>Um grande abraço,
>
> Luiz Reginaldo
>
>
>----- Original Message -----
>From: josesmg <[EMAIL PROTECTED]>
>To: <[EMAIL PROTECTED]>
>Sent: Thursday, January 24, 2002 2:51 PM
>Subject: [java-list] String
>
>
> > Para comparar uma String s1 com outra s2 eu devo usar o método equals.
> >
> > Porém eu com uma dúvida. Se eu defino s1 = "abc" e s2 = "abc" e faço
> >
> > if (s1 == s2) me retorna true.
> >
> > Alguém me explica isto.
> >
> >
> >
> >
> > ------------------------------ 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]
> > -------------------------------------------------------------------------
> >
>
>
>------------------------------ 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]
>-------------------------------------------------------------------------
>


O MSN Photos é o jeito mais fácil de compartilhar e imprimir as suas fotos: http://photos.msn.com.br/support/worldwide.aspx
------------------------------ 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] -------------------------------------------------------------------------

Responder a