Розглянемо простий тестовий клас:
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
поглиблено, я пропоную вам проігнорувати цей метод.