Rozważmy prostą klasę testową:
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");
}
}
Możesz (świadomie) powiedzieć, że xto jest równe y(nie odwołanie do obiektu), ale po uruchomieniu programu zobaczysz następujący wynik:
false
true
Pytanie: Jaka jest różnica między compareTo()i equals()w BigDecimaltym, że compareTomożna określić, że xjest równa y?
PS: Widzę, że BigDecimal ma inflate()metodę na equals()metodę. Co inflate()właściwie robi?
inflate(): nie jest częścią publicznego API, ponieważ manipuluje tylko wewnętrzną reprezentacją i nie ma widocznego wpływu na „zewnątrz”. Więc jeśli naprawdę nie chceszBigDecimaldogłębnie przestudiować implementacji , proponuję zignorować tę metodę.