В Java используются следующие операторы сравнения:
- == Равно
- != Не равно
- > Больше
- < Меньше
- >= Больше или равно
- <= Меньше или равно
Результатом выполнения указанных операторов является значение логического типа данных - true или false. Каждый из операторов сравнивает 2 величины, находящиеся слева и справа от него.
Операторы == Равно и != Не равно
работают с числовыми, строковыми, символьными, логическими типами данных.
Рассмотрим работу операторов с числовыми типами данных. Объявим 3 переменных и присвоим им значения.
int a = 1;
int b = 1;
int c = 2;
Итак, результатом выполнения оператора a == b будет логическое значение true, т.к. значение переменной a равно значению переменной b.
Результатом выполнения оператора a == c будет логическое значение false, т.к. значение a не равно значению переменной c.
Возникает логичный вопрос. А зачем вообще нужны все эти операторы и что потом делать с логическими значениями true и false?
На самом деле все эти операторы очень активно используются при условном ветвлении в программе - когда в зависимости от различного выполнения условий выбирается дальнейшее направление работы программы. Также все эти операторы используются в циклах. В самых ближайших уроках мы узнаем, про что идёт речь и как это используется на практике. А в текущем уроке мы будем присваивать полученные логические значения переменным логического типа boolean.
Если объявить переменную логического типа
boolean result;
и присвоить ей значение
result = (a == b);
то программа присвоит переменной result значение true, поскольку значения обеих переменных a и b равны 1. При этом мы поместили в скобки проверяемое выражение для лучшей читаемости кода. Можно написать result = a == b; Результат будет тот же. Если значение переменной a равно значению переменной b, то программа присвоит переменной result значение true.
При исполнении команды
result = (a == c);
программа присвоит переменной result значение false, поскольку условие в скобках не верно (значение переменной a не равно значению переменной b).
Обратная ситуация с оператором != не равно.
Воспользуемся теми же переменными - a, b, c, result.
int a = 1;
int b = 1;
int c = 2;
boolean result;
Результатом выполнения операции
result = (a != b);
будет присвоение переменной result значения false, поскольку выражение в скобках неверно. В скобках написано, что значение переменной a не равно значению переменной b, а это ложь, значение переменной a равно значению переменной b. Соответственно, переменной result будет присвоено значение ложь, т.е. false.
А вот результатом выполнения операции
result = (a != c);
будет присвоение переменной result значения true, поскольку выражение в скобках верно. Значение переменной a - число 1, а значение переменной b - число 2. В скобках написано, что a не равно c и это является правдой. Соответственно, переменной result будет присвоено значение правда, т.е. true.
С данными строкового типа всё аналогично
String a = "Привет";
Srting b = "Мир";
String c = "Привет";
boolean result;
Команда result = (a == b); присвоит переменной result значение false.
Команда result = (a == c); присвоит переменной result значение true.
Команда result = (a != b); присвоит переменной result значение true.
Команда result = (a != c); присвоит переменной result значение false.
То же самое и с данными символьного типа char
char sym1 = 'a';
char sym2 = 'a';
char sym3 = 'b';
boolean result;
Команда result = (sym1 == sym2); присвоит переменной result значение true.
Команда result = (sym1 == sym3); присвоит переменной result значение false.
Команда result = (sym1 != sym2); присвоит переменной result значение false.
Команда result = (sym1 != sym3); присвоит переменной result значение true.
Теперь самый сложный для понимания и запутанный логический тип данных.
boolean a = true;
boolean b = false;
boolean result;
Команда result = (a == true); присвоит переменной result значение true. Значение переменной a действительно равно true, значит, выражение в скобках - это правда, соответственно, переменной result будет присвоено значение true.
Команда result = (a == false); присвоит переменной result значение false. Значение переменной a не равно false, значит, выражение в скобках не верно, соответственно, переменной result будет присвоено значение false.
Команда result = (b == true); присвоит переменной result значение false. Значение переменной b не равно true, значит, выражение в скобках не верно, соответственно, переменной result будет присвоено значение false.
Команда result = (b == false); присвоит переменной result значение true. Значение переменной b действительно равно false, значит, выражение в скобках - это правда, соответственно, переменной result будет присвоено значение true.
Команда result = (a != true); присвоит переменной result значение false. Значение переменной a равно true, значит, выражение в скобках - не верно, соответственно, переменной result будет присвоено значение false.
Команда result = (a != false); присвоит переменной result значение true. Значение переменной a действительно не равно false, значит, выражение в скобках верно, соответственно, переменной result будет присвоено значение true.
Команда result = (b != true); присвоит переменной result значение true. Значение переменной b действительно не равно true, значит, выражение в скобках верно, соответственно, переменной result будет присвоено значение true.
Команда result = (b != false); присвоит переменной result значение false. Значение переменной b равно false, значит, выражение в скобках - это не правда, соответственно, переменной result будет присвоено значение false.
Теперь предлагаю на практике рассмотреть работу операторов == Равно и != Не равно.
Создадим новый класс с именем Ravno
class Ravno
{
}
Внутри фигурных скобок класса Ravno объявим главный метод main
public static void main (String[] args)
{
}
Внутри фигурных скобок метода main создадим оператор вывода текста со следующим текстом:
System.out.println(" Демонстрация работы операторов равно и не равно с числовыми данными");
Теперь объявим 4 переменные
int a = 10;
int b = 10;
int c = 20;
boolean result;
и выведем из значения на экран для наглядности:
System.out.println("Значение переменной a " + a);
System.out.println("Значение переменной b " + b);
System.out.println("Значение переменной c " + c);
Затем будем присваивать переменной result все вариации выражений и выводить на экран значение этой переменной:
result = (a == b);
System.out.println("Результат выполнения оператора a==b - " + result);
result = (a == c);
System.out.println("Результат выполнения оператора a==c - " + result);
result = (a != b);
System.out.println("Результат выполнения оператора a!=b - " + result);
result = (a != c);
System.out.println("Результат выполнения оператора a!=c - " + result);
Далее вставим пустую строку
System.out.println(" ");
и выведем на экран следующий текст:
System.out.println(" Демонстрация работы операторов равно и не равно с текстовыми данными");
Затем объявим 3 переменных строкового типа:
String text = "Текст2";
String text1 = "Текст1";
String text2 = "Текст2";
и выведем их значения на экран
System.out.println("Значение переменной text " + text);
System.out.println("Значение переменной text1 " + text1);
System.out.println("Значение переменной text2 " + text2);
В данном случае не будем присваивать результат выполнения операторов переменной result, а сразу выведем логическое значение на экран:
System.out.println("Результат выполнения оператора text==text1 - " + (text==text1));
System.out.println("Результат выполнения оператора text==text2 - " + (text==text2));
System.out.println("Результат выполнения оператора text!=text1 - " + (text!=text1));
System.out.println("Результат выполнения оператора text!=text2 - " + (text!=text2));
Обращаю внимание на то, что поскольку для вывода на экран используются только текстовые данные, последнее выражение взято в скобки для того, чтобы компилятор правильно распознал, как мы хотим осуществить вывод на экран.
То есть если указать
("данные строкового типа" + значение переменной строкового типа1) == значение переменной строкового типа2
будет выведен один результат на экран
А если указать
"данные строкового типа" + (значение переменной строкового типа1 == значение переменной строкового типа2)
то будет выведен другой результат.
В данной программе мы не будем демонстрировать работу операторов с символьными типами данных (поскольку работа аналогична работе со строковыми типами данных), а также с логическими типами данных (поскольку работа аналогична работе с числовыми типами данных). Но Вам для "набивания руки" полезно было бы это сделать самостоятельно.
Теперь сохраним программу под именем Ravno.java
Затем компилируем и запустим программу
Во второй части урока рассмотрим работу остальных операторов сравнения, посмотрим на практике их работу и сделаем выводы из данного урока.
Ссылка на предыдущий урок
Ссылка на следующий урок
Ссылка на содержание курса