Considérons la classe de test simple :
import java.math.BigDecimal;
/**
* @author The Elite Gentleman
*
*/
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
BigDecimal x = new BigDecimal("1");
BigDecimal y = new BigDecimal("1.00");
System.out.println(x.equals(y));
System.out.println(x.compareTo(y) == 0 ? "true": "false");
}
}
Vous pouvez (consciemment) dire que x
est égal à y
(pas de référence objet), mais lorsque vous exécutez le programme, le résultat suivant apparaît :
false
true
Question : Quelle est la différence entre compareTo()
y equals()
en BigDecimal
que compareTo
peut déterminer que x
est égal à y
?
PS : Je vois que BigDecimal a une fonction inflate()
méthode sur equals()
méthode. Que fait inflate()
font réellement ?
1 votes
Ad
inflate()
il ne fait pas partie de l'API publique car il ne manipule que la représentation interne et n'a pas d'effet visible pour l'"extérieur". Donc, à moins que vous ne souhaitiez vraiment étudier l'implémentation de la fonctionBigDecimal
en profondeur, je vous suggère d'ignorer cette méthode.0 votes
Une brève explication et des extraits du code source peuvent être trouvés aquí