Questão que eu inventei

3 respostas
albjava
public static void main(String args[]) {
    
    final double y = 0.0;
    int z = 0x00001;
    int t = z * 2;
    t -= (z + z);
    Object x = y / t;
    System.out.println(t);
    System.out.println(x.equals(t));

  }

O que imprime?

3 Respostas

T

0
false

Justificativa:
0 - só fazer as contas
false - x é um java.lang.Double, t é um int que foi “boxed” para java.lang.Integer, e objetos de classes diferentes não podem ser “equal”.

airton.asg

Como assim o que imprime ???

tipo...

final double y = 0.0;
int z = 0x00001;
int t = z * 2;
--> Duplica o Valor de z e coloca em t
t -= (z + z);
a variavel "t" possui o dobro de "z", porém é subtraido o dobro de "z", portanto fica zerado
Object x = y / t;
Intancia "x" do tipo Object, divide um double 0.0 por 0, isso eh diferente... porem da zero
System.out.println(t);
--> "t" nessa hora vale 0 (Zero)
System.out.println(x.equals(t));
--> X é diferente... X possui um valor do tipo Object estranho...

....
É isso msm ??? eu rodei o código... deu isso

albjava

É isso mesmo,

0 e false

O valor de X no fim é NaN, e t vale 0 mesmo.

se fizer:

isso sim é TRUE

Criado 2 de abril de 2007
Ultima resposta 3 de abr. de 2007
Respostas 3
Participantes 3