Фрагмент лекции JavaRush - университета.
— Хочу рассказать тебе немного о сравнении переменных в Java.
— Самые простые операторы сравнения ты уже знаешь – это меньше (<) и больше (>).
— Ага.
— Так же есть «равно»(==) и «не равно»(!=). А еще «меньше либо равно»(<=) и «больше либо равно»(>=).
— О, это уже интереснее.
— Обрати внимание, что операторов «=<» и «=>» в Java нет!
— Знак «=» используется для операции присваивания, поэтому для равенства используют «==» — два знака равно. Для того, чтобы проверить, что переменные не равны, используют «!=»
— Ясно.
— При сравнении двух переменных в Java с использованием оператора «==», происходит сравнение того, что эти переменные в себе содержат.
— Т.е. для переменных примитивных типов происходит сравнение значений.
— Для переменных ссылочных типов происходит сравнение ссылок. Т.е. если объекты идентичны внутри, но ссылки на них разные, сравнение покажет, что они неравны: результатом сравнения будет false(ложь). Сравнение ссылок будет true(истина), только если обе ссылки указывают на один и тот же объект.
— Для сравнения объектов можно использовать специальный метод equals(). Этот метод (и все методы класса Object) добавляется компилятором в твой класс, даже если ты их не объявляешь. Поясню на примерах:
Код | Пояснение | |
---|---|---|
1 |
|
Происходит сравнение примитивных типов. На экран будет выведено true. |
2 |
|
Происходит сравнение ссылок. На экран будет выведено true. Обе переменных хранят ссылки на один и тот же объект. |
3 |
|
Происходит сравнение ссылок. На экран будет выведено true. Обе переменных хранят ссылки на один и тот же объект. |
4 |
|
Происходит сравнение ссылок. На экран будет выведено false. Переменные хранят ссылки на два идентичных объекта Cat, но не на один и тот же. |
5 |
|
Происходит сравнение ссылок. На экран будет выведено false. Переменные хранят ссылки на два идентичных объекта String, но не на один и тот же. |
6 |
|
Происходит сравнение объектов. Если в классе Cat не переопределен метод equals(), на экран будет выведено false. Переменные хранят ссылки на два идентичных объекта Cat, но не на один и тот же. |
7 |
|
Происходит сравнение объектов. На экран будет выведено true. Переменные хранят ссылки на два идентичных объекта String. |
— И, кстати, едва не забыл! Вот тебе несколько заданий:
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ