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]
-------------------------------------------------------------------------

Reply via email to