Найти в Дзене

Крутой курс Java для "чайников". Урок 9. Операторы сравнения. Часть 1.

В 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

Затем компилируем и запустим программу

-2

Во второй части урока рассмотрим работу остальных операторов сравнения, посмотрим на практике их работу и сделаем выводы из данного урока.

Ссылка на предыдущий урок

Ссылка на следующий урок

Ссылка на содержание курса