Muito obrigado a voc� e aos demais pela clareza das explica��es.
Show de bola.
Abra�os,
Ruy Pedroso
At 20:38 3/1/2002 -0200, you wrote:
>Ruy,
>no java internamente existe um pool de Strings ...
>
>Mas apenas as Strings construidas com = "teste" sao colocadas no pool ...
>Ha, mas em uma String sua vc pode forcar ela pra ir para o pool tbem mas nao
>lembro qual eh o metodo ...
>
>Vou dar um exemplo ...
>
>Imagine que isso eh a memoria do JVM
>
>----------
>
>----------
>
>nao se preocupe ainda com o conteudo ...
>
>Qdo vc faz um
>String s1 = "teste"
>o java coloca isso no pool de String, q no exemplo eh o endereco 0x001 ...
>----------
>0x001 "teste"
>----------
>e seu s1, nada mais esta fazendo do q apontar pra esse 0x001
>Entao se vc faz
>String s2 = "teste"
>Vc nao esta na verdade criando uma outra String, pq jah existe um "teste" no
>pool entao o java apenas aponta seu s2 para 0x001 ... ou seja, o mesmo
>endereco do seu s1 ...
>
>E se vc fizer a comparacao com == o java vai comparar o endereco das
>variaveis ...
>entao s1 == s2 internamente o java compara 0x001 == 0x001 q eh igual ...
>Bom ate ai tudo bem ...
>
>Mas se vc fizer
>s2 = new String("teste") vc acabou de dizer pro java criar uma nova String ...
>O JVM cria um outro "teste" na memoria, mas com um novo endereco, e aponta
>sua variavel para esse novo endereco, no caso 0x002 ...
>----------
>0x001 "teste"
>0x002 "teste"
>----------
>E agora se vc fizer a comparacao com == internamente o JVM estara comparando
>0x001 == 0x002 ... Que eh diferente, apesar do conteudo igual ...
>Entao sempre q for comparar o conteudo da String, compare com o metodo equals
>...
>
>que compara o conteudo e nao o endereco de memoria ...
>
>Entao s1.equals(s2) vai retornar igual, independente do endereco de memoria
>...
>
>Espero ter ajudado ...
>
>
>
>On Thursday 03 January 2002 11:41 am, you wrote:
> > Oi Pessoal,
> >
> > Antes de tudo, agrade�o pelas ajudas anteriores. Essa lista est� me
> > ajudando bastante.
> >
> > Gostaria mais uma vez de pedir aux�lio. Estou com problemas na compara��o
> > de strings. A quest�o � que armazeno numa Hashtable (utilizando o m�todo
> > put()) alguns valores obtidos de um banco de dados.
> >
> > A primeira coisa que fa�o � exibir na tela o conte�do de algumas keys da
> > Hashtable, atrav�s no m�todo get() (por ex.: <%=
> > totais.get("adiantamentos") %>). At� aqui funciona sem problemas.
> >
> > Contudo, quando tento comparar o conte�do da key com uma string, por ex:
> >
> > if (totais.get("adiantamentos") == "0,00") {....
> >
> > a compara��o n�o � realizada, mesmo sabendo que o valor da key � "0,00".
> >
> > Olhando na documenta��o do m�todo get (classe Hashtable), notei que ele
> > retorna um "Object". Por isso, tentei algumas varia��es:
> >
> > if ((String)totais.get("adiantamentos") == "0,00") {....
> >
> > ou
> >
> > if (totais.get("adiantamentos").toString() == "0,00") {....
> >
> > Apesar de compilarem sem problemas, nenhuma dessas solu��es resolveu a
> > quest�o.
> >
> > Algu�m pode me dar uma pista?
> >
> > Desde j� agrade�o qualquer ajuda.
> >
> > Abra�os,
> > Ruy Pedroso
> >
> >
> > ------------------------------ 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]
>-------------------------------------------------------------------------
------------------------------ 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]
-------------------------------------------------------------------------