J'ai lu ce post zéro négatif et positif .
À ma compréhension, le code suivant devrait donner true
et true
en sortie.
Cependant, il donne false
et true
comme sortie.
Je compare un zéro négatif avec un zéro positif.
public class Test {
public static void main(String[] args) {
float f = 0;
float f2 = -f;
Float F = new Float(f);
Float F1 = new Float(f2);
System.out.println(F1.equals(F));
int i = 0;
int i2 = -i;
Integer I = new Integer(i);
Integer I1 = new Integer(i2);
System.out.println(I1.equals(I));
}
}
Pourquoi avons-nous un comportement différent pour les 0 pour Integer
et Float
?
i
et i2
sont exactement les mêmes. Ensuite, lorsque vous créez de nouveaux Integer
s, ils enveloppent tous les deux la même valeur exacte. I1.equals(I)
sera vrai.
int i = Integer.MIN_VALUE, i2 = -i;
…
new
les types d'encapsuleurs ici. Il suffit d'utiliser, par exempleInteger i = 0, i2 = -i; System.out.println(i.equals(i2)); Float f1 = 0f, f2 = -f1; System.out.println(f1.equals(f2));