Completando
No
segundo caso os objetos s�o diferentes, para ver se as Strings s�o iguais embora
estej�o referenciadas no pool em posi��es diferentes
voc�
ter� que buscar a representa��o can�nica da String da seguinte
forma:
(s1.intern()==s2.intern()) que retornar� true no caso de s1.equals(s2)
ser true.
-----Mensagem original-----
De: Luiz Felipe Molina [mailto:[EMAIL PROTECTED]]
Enviada em: Thursday, August 22, 2002 7:14 PM
Para: [EMAIL PROTECTED]
Assunto: Re: [java-list] StringOl�!Quando voc� faz "x", est� automaticamente criando uma nova String com o valor x. Caso j� haja uma String com este valor, e pelo fato das Strings serem est�ticas em Java, o compilador simplesmente utiliza a refer�ncia j� criada.Assim temos ques1 = "x";s2 = "x";(s1==s2) => Truepois s2 e s1 acabam apontando para o mesmo objeto, e por tanto o mesmo endere�o de mem�ria.J� no caso deString s1 = "x";
String s2 = new String("x");s2 ser� um novo objeto, uma nova String, com os mesmos caracteres contidos em "x". � como um clone, e por tanto neste caso s1 e s2 apontam para diferentes endere�os de mem�ria.Note que o ato de fazer:String s = new String("minha string");faz o compilador criar uma string quando encontra "minha string", e clona-la por causa do new String. Assim, no final desta linha, haveriam 2 objetos. 2 Strings com o valor "minha string", sendo que uma delas estaria sendo referenciada por s, e a outra n�o estaria sendo referenciada por ninguem. assim, esta se torna uma candidata a ser recolhida pelo garbage collection.Por tanto, prefira "minha string" � new String("minha string").Luiz Felipe Molina----- Original Message -----From: "Kleber Rodrigo Carvalho" <[EMAIL PROTECTED]>To: <[EMAIL PROTECTED]>Sent: Wednesday, August 21, 2002 4:18 PMSubject: [java-list] String> PessoALL
>
> Qual a diferen�a entre:
> String s1 = "x";
> String s2 = new String("x");
>
> ????
>
>
> Cheguei a esse duvida pois quando voc� faz (s1 == s2)
> vc est� comparando o endere�o de memoria. Neste caso e
> falso, pois s1 � uma inst�ncia de objeto e s2 � outra
> inst�ncia.
>
> Agora se eu fazer:
>
> String s1 = "x";
> String s2 = "x"
>
> Se eu fizer a compara��o (s1 == s2), est� dando true,
> ou seja ambos est�o apontando para a mesma area de
> memoria.
>
> Algu�m sabe porque ???
>
>
> Obrigado
> []'s
> Kleber Rodrigo de Carvalho
>
>
>
>
>
> __________________________________________________
> Do You Yahoo!?
> HotJobs - Search Thousands of New Jobs
> http://www.hotjobs.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
> historico: http://www.mail-archive.com/java-list%40soujava.org.br
> para sair da lista: envie email para [EMAIL PROTECTED]
> -------------------------------------------------------------------------
>
