Имеется абсолютно рабочий класс с методом в котором сравниваются два объекта
Непонятна только одна запись. Зачем при сравнении вызывать у свойства ob свойство num ?
А не сразу взять и указать свойство ob для сравнения с num ?
Однако нельзя :( Вопрос, Почему?
ob - это класс, а вы сравниваете числовые значения, переменную num. Вот если бы ob был классом унаследованным от Number, вот тогда бы прокатило такое
Так вы double правильно не сравните. Посмотрите пример кода сравнения для прояснения ситуации:
package underwaterRocks.myDouble;
public class MyDouble {
public static void main(String[] args) {
double dx = 1.4 - 0.1 - 0.1 - 0.1 - 0.1;
System.out.println("dx = " + dx); // dx = 0.9999999999999997
System.out.print("Сравнение (dx == 1.0):");
System.out.println(dx == 1.0); // false, потому что 1.0 не равно 0.9999999999999997
/*как правильно сравнивать double*/
final double EPSILON = 1E-14;
double xx = 1.4 - 0.1 - 0.1 - 0.1 - 0.1;
double xy = 1.0;
/* сравниваем xx c xy */
if (Math.abs(xx - xy) < EPSILON) {
System.out.println(xx + " это примерно равно " + xy + " EPSILON = " + EPSILON);
}
}
}
Чтобы сравнить объекты вам нужно сравнить все их поля и hashcode. Тогда они будут эквивалентны. Или сравнить все их поля, тогда они будут не эквивалентны, а равны.
Странно, что для подобного функционала не использована реализация интерфейса Comparabe и переопределение метода compareTo(), однако, весь код логичен. Логика проста, во время сравнения этих двух объектов сравнивается текущий объект, тот что слева от знака равенства и второй объект, которой передается в качестве параметра в функцию. У текущего объедка мы сразу получаем поле num, но вот чтобы получить поле num у переданного объекта, нам необходимо обратиться к нему именно вот так: ob.num, отсюда и такая конструкция
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости