Considera la semplice classe di test:
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");
}
}
Puoi (consapevolmente) dire che xè uguale a y(non riferimento all'oggetto), ma quando esegui il programma, il seguente risultato mostra:
false
true
Domanda: Qual è la differenza tra compareTo()e equals()in BigDecimalciò che compareTopuò determinare che xè uguale a y?
PS: Vedo che BigDecimal ha un inflate()metodo sul equals()metodo. Cosa fa inflate()effettivamente?
inflate(): non fa parte dell'API pubblica perché manipola solo la rappresentazione interna e non ha effetti visibili all'esterno. Quindi, a meno che tu non voglia davvero studiare l'implementazioneBigDecimalapprofondita, ti suggerirei di ignorare questo metodo.