Michel,

Vc tem toda razão. Não fui muito claro em minha explicação.
Onde já se viu "mera coinscidência" em programação?!?
Ou é TRUE ou é FALSE, depende de como os objetos serão instanciados.

Para obter TRUE:
String x = "100";
String y = "100";


Para obter FALSE:
String x = new String("100");
String y = new String("100");

Minhas desculpas...
[]'s

Rafael Pioli


-----Original Message-----
From: Michel [mailto:hewlet@;ieg.com.br]
Sent: quarta-feira, 16 de outubro de 2002 12:17
To: [EMAIL PROTECTED]
Subject: Re: [java-list] Instâncias


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:giovani-salvador@;procergs.rs.gov.br]
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:hewlet@;ieg.com.br>
To: [EMAIL PROTECTED] <mailto:java-list@;soujava.org.br>
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] 
-------------------------------------------------------------------------

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