Сравнивание двух объектов

250
23 августа 2018, 04:10

Имеется абсолютно рабочий класс с методом в котором сравниваются два объекта

Непонятна только одна запись. Зачем при сравнении вызывать у свойства ob свойство num ?

А не сразу взять и указать свойство ob для сравнения с num ?

Однако нельзя :( Вопрос, Почему?

Answer 1

ob - это класс, а вы сравниваете числовые значения, переменную num. Вот если бы ob был классом унаследованным от Number, вот тогда бы прокатило такое

Answer 2
  1. Вы сравниваете не сами объекты,а поля объектов.
  2. Так вы 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);
            }
        }
    }      
    
  3. Чтобы сравнить объекты вам нужно сравнить все их поля и hashcode. Тогда они будут эквивалентны. Или сравнить все их поля, тогда они будут не эквивалентны, а равны.

Answer 3

Странно, что для подобного функционала не использована реализация интерфейса Comparabe и переопределение метода compareTo(), однако, весь код логичен. Логика проста, во время сравнения этих двух объектов сравнивается текущий объект, тот что слева от знака равенства и второй объект, которой передается в качестве параметра в функцию. У текущего объедка мы сразу получаем поле num, но вот чтобы получить поле num у переданного объекта, нам необходимо обратиться к нему именно вот так: ob.num, отсюда и такая конструкция

READ ALSO
Многопоточность в одном методе

Многопоточность в одном методе

Есть метод, который декомпресит файл, но этот процесс довольной долгий (а файлов 130+)Я решил реализовать это многопоточно

206
Данные в series

Данные в series

Нашёл пример круговой диаграммы написанной на javascript на сайте HighCharts:

269
Как Показать/скрыть div при выборе radio?

Как Показать/скрыть div при выборе radio?

Есть 2 radio "частное лицо" и "фирма"При выборе "фирма" мне надо показать поле для заполнения, а при выборе "частное лицо" это поле скрыть

232
Как убрать названия улиц с гугл maps API?

Как убрать названия улиц с гугл maps API?

У гугл карты АПИ есть свойство styles куда передаётся массив с объектами свойствЕсть ли такое свойство убирающее названия улиц с карты? помогите...

203