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