[code] 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));
}[/code]
O que imprime?
[code] 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));
}[/code]
O que imprime?
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”.
Como assim o que imprime ???
tipo…
[code]final double y = 0.0;[/code]
[code] int z = 0x00001;[/code]
[code] int t = z * 2; [/code] --> Duplica o Valor de z e coloca em t
[code] t -= (z + z);[/code] a variavel "t" possui o dobro de "z", porém é subtraido o dobro de "z", portanto fica zerado
[code]Object x = y / t;[/code] Intancia "x" do tipo Object, divide um double 0.0 por 0, isso eh diferente... porem da zero
[code]System.out.println(t);[/code] --> "t" nessa hora vale 0 (Zero)
[code]System.out.println(x.equals(t)); [/code]--> X é diferente... X possui um valor do tipo Object estranho...
…
É isso msm ??? eu rodei o código… deu isso
É isso mesmo,
0 e false
O valor de X no fim é NaN, e t vale 0 mesmo.
se fizer:
isso sim é TRUE