— Хочу рассказать тебе немного о сравнении переменных в Java.

— Самые простые операторы сравнения ты уже знаешь – это меньше (<) и больше (>).

— Ага.

— Так же есть «равно»(==) и «не равно»(!=). А еще «меньше либо равно»(<=) и «больше либо равно»(>=).

— О, это уже интереснее.

— Обрати внимание, что операторов «=<» и «=>» в Java нет!

— Знак «=» используется для операции присваивания, поэтому для равенства используют «==» — два знака равно. Для того, чтобы проверить, что переменные не равны, используют «!=»

— Ясно.

— При сравнении двух переменных в Java с использованием оператора «==», происходит сравнение того, что эти переменные в себе содержат.

— Т.е. для переменных примитивных типов происходит сравнение значений.

— Для переменных ссылочных типов происходит сравнение ссылок. Т.е. если объекты идентичны внутри, но ссылки на них разные, сравнение покажет, что они неравны: результатом сравнения будет false(ложь). Сравнение ссылок будет true(истина), только если обе ссылки указывают на один и тот же объект.

— Для сравнения объектов можно использовать специальный метод equals(). Этот метод (и все методы класса Object) добавляется компилятором в твой класс, даже если ты их не объявляешь. Поясню на примерах:

Код Пояснение
1
int a = 5;
int b = 5;
System.out.println(a == b);
Происходит сравнение примитивных типов.
На экран будет выведено true.
2
Cat cat1 = new Cat("Vaska");
Cat cat2 = cat1;
System.out.println(cat1 == cat2);
Происходит сравнение ссылок.
На экран будет выведено true.
Обе переменных хранят ссылки на один и тот же объект.
3
String s = new String("Mama");
String s2 = s;
System.out.println(s == s2);
Происходит сравнение ссылок.
На экран будет выведено true.
Обе переменных хранят ссылки на один и тот же объект.
4
Cat cat1 = new Cat("Vaska");
Cat cat2 = new Cat("Vaska");
System.out.println(cat1 == cat2);
Происходит сравнение ссылок.
На экран будет выведено false.
Переменные хранят ссылки на два идентичных объекта Cat, но не на один и тот же.
5
String s = new String("Mama");
String s2 = new String("Mama");
System.out.println(s == s2);
Происходит сравнение ссылок.
На экран будет выведено false.
Переменные хранят ссылки на два идентичных объекта String, но не на один и тот же.
6
Cat cat1 = new Cat("Vaska");
Cat cat2 = new Cat("Vaska");
System.out.println(cat1.equals(cat2));
Происходит сравнение объектов.
Если в классе Cat не переопределен метод equals(), на экран будет выведено false.
Переменные хранят ссылки на два идентичных объекта Cat, но не на один и тот же.
7
String s = new String("Mama");
String s2 = new String("Mama");
System.out.println(s.equals(s2));
Происходит сравнение объектов.
На экран будет выведено true.
Переменные хранят ссылки на два идентичных объекта String.

— И, кстати, едва не забыл! Вот тебе несколько заданий: