----- Original Message -----
Sent: Tuesday, October 15, 2002 1:06
PM
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
* #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
(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 -----
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.