Caro SILVA Rafael P CONFAB: O fato do 1º exemplo ter dado TRUE definitivamente não é mera coincidência! Caiu no exame de programador o que seria impresso, se fosse apenas coincidência, não poderíamos dar uma resposta precisa!
----- Original Message ----- From: SILVA Rafael P CONFAB <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Tuesday, October 15, 2002 5:04 PM Subject: RE: [java-list] Instâncias Pessoal, Tem muito mais coisas envolvidas nisso... O fato da primeira comparação ter dado TRUE é pura coinscidência, tanto poderia como não poderia ter dado TRUE. A questão é como o Java aloca os objetos na memória e acaba reutilizando objetos iguais com endereços diferentes. Vale a pena dar uma olhada no tema HEAP, procurem na WEB. Para quem tem o Core Java vol. 1 lá tb tem boas explicações. -----Original Message----- From: Giovani Salvador [mailto:[EMAIL PROTECTED]] Sent: terça-feira, 15 de outubro de 2002 13:07 To: [EMAIL PROTECTED] Subject: Re: [java-list] Instâncias Legal a questão. Depurei o código dentro do JBuilder e dei uma olhada nas propriedades dos objetos. No primeiro exemplo, tudo igual, no segundo, as propriedades "Offset" e "Value" estavam diferentes. Em "Value" foram considerados os zero à esquerda em 9 posições, por isso deu diferente. Abaixo, o código do método toString da classe Integer. Neste código é que deu a diferença. /** * Returns a <code>String</code> object representing the * specified integer. The argument is converted to signed decimal * representation and returned as a string, exactly as if the * argument and radix 10 were given as arguments to the {@link <mailto:{@link> * #toString(int, int)} method. * * @param i an integer to be converted. * @return a string representation of the argument in base 10. */ public static String toString(int i) { int q, r, charPos ; charPos = 12 ; char buf [] = new char [charPos] ; char sign = 0 ; if (i == Integer.MIN_VALUE) { return "-2147483648"; } if (i < 0) { sign = '-' ; i = -i ; } // Generate two digits per iteration while ( i >= 65536 ) { q = i / 100 ; // really: r = i - (q * 100) ; r = i - ((q << 6) + (q << 5) + (q << 2)) ; i = q ; buf [--charPos] = DigitOnes [r] ; buf [--charPos] = DigitTens [r] ; } // Fall thru to fast mode for smaller numbers // assert(i <= 65536, i); for (;;) { q = (i * 52429) >>> (16+3) ; r = i - ((q << 3) + (q << 1)) ; // r = i-(q*10) ... buf [--charPos] = digits [r] ; i = q ; if (i == 0) break ; } if (sign != 0) { buf [--charPos] = sign ; } ************************************************** Giovani Salvador Site pessoal - http://pagina.de/siglas <http://pagina.de/siglas> (Siglas de informática) PROCERGS - Cia. de Processamento de Dados do Estado do Rio Grande do Sul - BRASIL Setor TSI - Tecnologia para Sistemas de Informação ICQ #44904309 ************************************************** ----- Original Message ----- From: Michel <mailto:[EMAIL PROTECTED]> To: [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> Sent: Tuesday, October 15, 2002 11:36 AM Subject: [java-list] Instâncias Olá galera! Para exemplificar minha dúvida, mostrarei dois exemplos: -------------EXEMPLO 1-------------- public static void main(String args[]) { String x = "100"; String y = "100"; if(x == y) System.out.println("IGUAL!!!") } ------------EXEMPLO 2---------- public static void main(String args[]) { String x = "100"; String y = Integer.toString(100); if(x == y) System.out.println("IGUAL!!!"); } No exemplo 1, aparece na tela "IGUAL!!!", no exemplo 2 não aparece nada! Sei que para comparar duas Strings tenho o mótodo equals(String s), mas para fins de conhecimento, gostaria de saber por quê o 1º exemplo funciona e o 2º não. Obrigado. ------------------------------ 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] ------------------------------------------------------------------------- ------------------------------ 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] -------------------------------------------------------------------------