Операторы сравнения (>, <, >=, <= …). Логические операторы (&&, ||, !)
Содержание
- 1. Операторы сравнения. Назначение. Сравнение значений и ссылок на объект
- 2. Пример операторов сравнения значений переменных различных типов
- 3. Пример, демонстрирующий применение операторов сравнения ссылок (===, !==)
- 4. Логические операторы (&&, ||, !). Перечень. Назначение
- 5. Примеры использования логических операторов &&, ||, ! в условных выражениях
- Связанные темы
Поиск на других ресурсах:
1. Операторы сравнения. Назначение. Сравнение значений и ссылок на объект
Для сравнения двух значений, в языке Kotlin используются операторы сравнения. Эти операторы есть бинарными. Это означает, что они требуют двух операндов соответственно в левой и правой частях. Результатом любого оператора сравнения есть значение true или false логического типа Boolean.
Операторы сравнения имеют такой же синтаксис и назначение как во многих других языках. К этим операторам относятся следующие:
- < – сравнивает два значения и определяет, есть ли значение в левой части оператора меньше значения в правой части. Если этот факт подтверждается, то возвращается true;
- > — определяет, есть ли значение в левой части оператора больше значения в правой части;
- <= — определяет, есть ли значение в левой части меньше или равно значению в правой части;
- >= — определяет, есть ли значение в левой части больше или равно значению в правой части;
- == — оценивает, равно ли значение слева значению в правой части;
- != — оценивает, не равно ли значение слева значению справа;
- === — определяет, ссылаются ли две ссылки на один объект (рисунок 1);
- !== — определяет, не ссылаются ли две ссылки на один объект (рисунок 2).
Из вышеприведенного перечня последние два оператора ===, !== сравнивают значения ссылок на объекты, а не значения этих объектов (см. рисунки 1, 2).
Рисунок 1. Случай, когда ссылки указывают на один объект. Оператор === возвращает true, оператор !== возвращает false
Рисунок 2. Случай, когда ссылки указывают на разные объекты. Оператор === возвращает false, оператор !== возвращает true
⇑
2. Пример операторов сравнения значений переменных различных типов
fun main(args:Array<String>) { // Операторы сравнения >, <, >=, <=, ==, != // Определение равенства значений переменных разных типов // 1. Сравнение значений целых типов val a : Int = 25 val b : Int = 30 var res1 : Boolean = a > b // res1 = false println("a > b => " + res1) res1 = a <= b // res1 = true println("a <= b => " + res1) // 2. Сравнение значений типов с плавающей запятой val x : Double = 2.85 val y = x var res2 = x == y // оператор == println("x == y => " + res2) // в операторе if if (x != 3.5) // оператор != println("x != 3.5") else println("x == 3.5") res2 = x < 0 // оператор < println("x < 0 => " + res2) // 3. Сравнение значений типа Char val c1 : Char = 'z' var res3 : Boolean res3 = c1 > 'a' if (res3) println("z > a") else println("z < a") // 4. Сравнение значений типа String val s1 = "abcd" val s2 = "abcde" var res4 = s1 != s2 println("\'abcd\' != \'abcde\' => " + res4) res4 = s1 < s2 println("\'abcd\' < \'abcde\' => " + res4) }
Результат выполнения программы
a > b => false a <= b => true x == y => true x != 3.5 x < 0 => false z > a 'abcd' != 'abcde' => true 'abcd' < 'abcde' => true
⇑
3. Пример, демонстрирующий применение операторов сравнения ссылок (===, !==)
// Некоторый класс с функцией class A { fun Hello() { println("Hello world!") } } fun main(args:Array<String>) { // Операторы сравнения ===, !== // Определение, указывают ли две ссылки на один объект // 1. Ссылки ref1, ref2 указывают на тот самый объект (экземпляр) val ref1 = A() val ref2 = ref1 // присваивание значений ссылок // Оператор === if (ref1 === ref2) println("ref1 === ref2") // Оператор !== if (ref1 !== ref2) println("ref1 !== ref2") // 2. Ссылки ref3, ref4 указывают на разные объекты val ref3 = A() val ref4 = A() // Оператор === if (ref3 === ref4) println("ref3 === ref4") // не выполнится // Оператор !== if (ref3!==ref4) println("ref3 !== ref4") // выполнится }
Результат выполнения программы
ref1 === ref2 ref3 !== ref4
⇑
4. Логические операторы (&&, ||, !). Перечень. Назначение
Логические операторы позволяют строить сложные логические выражения минуя большое (лишнее) количество операторов условного перехода в алгоритме решения задачи.
Результатом логического оператора является значение true или false логического типа Boolean. Последовательность логических операторов, объединенных операндами, образует логическое выражение.
С помощью логического выражения можно сократить программный код, улучшив его визуализацию.
Например, если в программе нужно выполнить одно единое действие (последовательность операторов) при выполнении различных условий
if (condition1) statement if (condition2) statement ... if (conditionN) statement
то более целесообразно применить логический оператор || по образцу ниже
if (condition1 || condition2 || ... || conditionN)
statement
В языке Kotlin определены следующие логические операторы
- && — логическое AND (И). Это бинарный оператор (требует двух операндов слева и справа). Оператор && возвращает true, если значение обоих операндов равно true. В противном случае возвращается false;
- || — логическое OR (ИЛИ). Это бинарный оператор. Оператор || возвращает false, если значение обоих операндов равно false. В противном случае оператор возвращает true;
- ! — логическое отрицание NOT (Нет). Это унарный оператор, возвращает true, если значение операнда равно false. Иначе возвращается false.
⇑
5. Примеры использования логических операторов &&, ||, ! в условных выражениях
5.1. Определение пары одинаковых чисел
Задача. Даны три вещественных числа a, b, c. Определить, есть ли среди них хотя бы одна пара равных между собой чисел.
Решение.
fun main(args:Array<String>) { // Определение пары равных между собой чисел // 1. Объявление переменных val a : Double val b : Double val c : Double // 2. Ввод значений print("a = ") a = readLine().toString().toDouble() print("b = ") b = readLine().toString().toDouble() print("c = ") c = readLine().toString().toDouble() // 3. Вычисление, используется оператор || - логическое ИЛИ if ((a==b) || (a==c) || (b==c)) println("Yes") else println("No") }
Результат выполнения программы
a = 3.8 b = 2.2 c = 3.8 Yes
⇑
5.2. Определение наличия указанной цифры в числе
Задача. Дано двухзначное число. Определить, входит ли в него цифра 7.
Решение.
fun main(args:Array<String>) { // Определение вхождения заданной цифры в числе // 1. Объявление переменных val number : Int // 2. Ввод значений print("number = ") number = readLine().toString().toInt() // 3. Проверка корректности введенных данных if ((number<10) || (number>99)) { println("Incorrect input.") return } // 4. Вычисление // Выделить первую и вторую цифры двузначного числа if ((number/10==7) || (number%10==7)) println("Yes") // цифра 7 есть в числе else println("No") }
Тестовый пример
number = 71 Yes
⇑
5.3. Определение наличия двух цифр в числе
Задача. Задано трехзначное число. Определить, содержатся ли в нем одновременно цифры 4 и 6.
Решение.
fun main(args:Array<String>) { // Определение вхождения двух заданных цифр в числе // 1. Объявление переменных val number : Int // указанное число // 2. Ввод значений print("number = ") number = readLine().toString().toInt() // 3. Проверка корректности введенных данных if ((number<100) || (number>999)) { println("Incorrect input.") return } // 4. Вычисление // Выделить первую, вторую и третью цифры трехзначного числа val digit1 : Int = number/100 val digit2 : Int = (number/10)%10 val digit3 : Int = number%10 if ((digit1==6)&&(digit2==4) || (digit1==4)&&(digit2==6)) println("Yes") else if ((digit1==6)&&(digit3==4) || (digit1==4)&&(digit3==6)) println("Yes") else if ((digit2==6)&&(digit3==4) || (digit2==4)&&(digit3==6)) println("Yes") else println("No") }
Тестовый пример
number = 624 Yes
⇑
5.4. Определение принадлежности числа заданному диапазону
Задача. Определить, принадлежит ли заданное число диапазону [a; b]. Задачу решить с использованием оператора отрицания! (NOT).
Решение.
fun main(args:Array<String>) { // Определение принадлежности числа заданному диапазону // 1. Объявление переменных val number : Int // указанное число val a : Int // нижний предел val b : Int // верхний предел // 2. Ввод значений print("number = ") number = readLine().toString().toInt() print("a = ") a = readLine().toString().toInt() print("b = ") b = readLine().toString().toInt() // 3. Проверка корректности введенных данных if (a>b) { print("Incorrect input.") return } // 4. Вычисление // используется отрицание ! (NOT) if (!((number>=a)&&(number<=b))) print("No") // за пределами диапазона else print("Yes") // в пределах диапазона }
Тестовый пример
number = 24 a = 35 b = 77 No
⇑
Связанные темы
- Базовые типы. Числовые литералы. Числовые константы. Примеры
- Переменные и константы. Ключевые слова var, val, const
⇑