Что выведут эти две строки?
var a = new BigDecimal("2.0");
var b = new BigDecimal("2.00");
System.out.println(a.equals(b));
System.out.println(a.compareTo(b));❤️ true и 0
🔥 false и 0
👍 false и -1
👇 Правильный ответ:
false и 0.
equals() сравнивает и числовое значение, и scale: у 2.0 он равен 1, у 2.00 — 2. А compareTo() сравнивает значения, поэтому возвращает 0.
Когда проверяете равенство сумм по величине, нужен compareTo() == 0. Но ключи HashMap и элементы HashSet используют equals() и hashCode(): эти объекты останутся разными.
🔗 Источник
══════ Навигация ══════
Вакансии • Задачи • Собесы
🐸 Библиотека джависта
#CoreJava