Розглянемо простий тестовий клас:
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");
}
}
Ви можете (свідомо) сказати, що xдорівнює y(не посилання на об'єкт), але при запуску програми відображається такий результат:
false
true
Питання: Яка різниця між compareTo()і equals()в BigDecimalчому compareToможна визначити, що xдорівнює y?
PS: Я бачу, що у BigDecimal є inflate()метод на equals()метод. Що насправді inflate()робить?
inflate(): він не є частиною загальнодоступного API, оскільки він лише маніпулює внутрішнім представленням і не має видимого ефекту для "зовнішніх". Тому, якщо ви дійсно не хочете вивчити реалізаціюBigDecimalпоглиблено, я пропоную вам проігнорувати цей метод.