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&nbsp;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]
-------------------------------------------------------------------------

Responder a