В общем случае ==
- это оператор, который проверяет равенство.Переменные объекта являются ссылками, поэтому он проверяет равенство ссылок или адресов.В случае примитивных типов данных, представляющих значения в памяти, это также означает, что он проверяет равенство значений.
Метод equals(~)
проверяет равенство значений или содержимого.Вы используете его не для примитивных типов данных, а для объектов.
Это также относится и к double и Double.Проблема, которая возникает с двойными значениями, заключается в несоответствии значений, вызванных ошибками округления.
Некоторые арифметические операции могут обрабатывать округление по-разному, поэтому вы можете получить false
для равенства значений, даже если считаете, что оно должно быть равным.
Следует отметить, что даже если правила округления немного противоречивы, арифметические операции являются детерминированными, поэтому несоответствие может быть обработано.