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 x
to 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 BigDecimal
tym, że compareTo
można określić, że x
jest 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 chceszBigDecimal
dogłębnie przestudiować implementacji , proponuję zignorować tę metodę.