Равенство простых типов и объектов

137
22 сентября 2019, 12:30

Можно ли сравнивать значение разных типов, таких как byte, short, char, int, long, float, double? Иначе говоря, будет ли иметь смысл логическая операция:

int x = 6;
byte y = 6;
if(y == x) {
    //Код
}

Вопрос возник из-за такой вещи, как совместимость типов. Так же прошу ответить, что случится (если, конечно, случится), если поменять переменные местами в операторе if? Такой же вопрос, но уже с объектами, классы которых находятся в одной ветке наследования:

public class Dog {
    //Код класса
}
public class Son_Of_Dog extends Dog {
    //Код
}
public class Test {
    public static void main (String[] args) {
        Dog d = new Dog;
        Son_Of_Dog s = new Son_Of_Dog();
        if(d.equals(s)) {
            //Код
        }
    }
}
Answer 1

Для корректной работы сравнения данных разных типов, между ними должна быть возможность неявного преобразования. В частности при сравнении byte и int такая возможность есть. Но вообще я Вам рекомендую самому попробовать поиграть с разными типами, это позволит Вам лучше понять особенности языка и увидеть их в действии. Что касается ссылочных типов, то там при правильной реализации метода equals в Вашем классе порядок сравнения не важен.

READ ALSO
Как получить JSON в ответ на авторизацию

Как получить JSON в ответ на авторизацию

Есть сервер, который при вводе логина и пароля возвращает статус 200 OkМне нужно, чтобы также в ответ на правильный логин и пароль приходил ответ...

184
Java Введение в работу с сервером

Java Введение в работу с сервером

Извиняюсь, возможно вопрос слишком общий и теоретическийХочу создать простое Desctop-приложение чата с графическим интерфейсом на java

160