Quand j'étudiais la relation d'équivalence, Java equals est sorti, alors notez
Je pense que vous savez bien quand cela devient. C'est le moment où ce sont des instances différentes et ont la même valeur.
vice versa
Je ne pense pas que le cas du devenir soit très familier.
Cette fois, nous vérifierons la question.
environnement: Java1.8 Eclipse Neon.1
python
@org.junit.Test
public void test() {
boolean b1 = 1 == 1.0;
Integer i2 = 1;
boolean b2 = i2==1.0; //true
boolean b3 = i2.equals(1.0); //false
System.out.println(b2);
System.out.println(b3);
}
Double # valueOf est appelé à auto boxing 1.0 de type double à type Double.
auto-boxing
public static Double valueOf(double d) {
return new Double(d);
}
Ce sera faux car il s'agira d'une comparaison utilisant des égaux entre 1.0 converti en type Double et 1 de type Integer.
Integer.equals()
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}
En ce qui concerne la boxe automatique, Java Puzzle a un problème similaire.
https://www.youtube.com/watch?v=V1vQf4qyMXg&t=11m19s
auto boxing can give you what we call the surprise left jab
by Joshua Bloch
Recommended Posts