Операторы отношения — это знаки вычислений, предназначенные для всевозможных сравнений по величине. Мы часто используем их в математике.
Таблица операторов отношения
| Оператор | Расшифровка |
|---|---|
== | Равно (проверка совпадения значений) |
!= | Не равно |
> | Больше |
< | Меньше |
>= | Больше или равно |
<= | Меньше или равно |
Оператор == также можно применять к другим объектам
Основные правила оператора равенства ==
== используется для проверки того, совпадают ли значения, которые представляют две переменные / объекты; если требуется строго определить, указывают ли две ссылки на абсолютно один и тот же объект в памяти, не используйте ==, вместо него применяйте специальную функцию identical().
Особая обработка нулевого значения null Если хотя бы одна из сторон равна null:
- Обе стороны равны
null— возвращаетсяtrue - Только одна сторона равна
null— возвращаетсяfalse
Логика работы обычных объектов Эквивалентно вызову метода == первого операнда: x.==(y). По своей сути оператор является методом, принадлежащим операнду.
Все приведенные ниже выводы дают true: значение null не равно ни 0, ни пустой строке «»
void main() {
// Обе стороны null, результат операции == равен true
print(null == null); //true
// Одна сторона null, другая содержит значение, результат == равен false
print(null != 0); //true
print(null != ""); //true
}
Code language: PHP (php)
Рассмотрим полный пример
void main() {
// Сравнение на равенство через ==
print(2 == 2);
print("dart" == "dart");
print([1,2] == [1,2]);
// Сравнение на неравенство через !=
print(2 != 3);
print(true != false);
// > Больше
print(3 > 2);
print(10 > -5);
// < Меньше
print(2 < 3);
print(-1 < 0);
// >= Больше или равно
print(3 >= 3);
print(5 >= 2);
// <= Меньше или равно
print(2 <= 3);
print(4 <= 4);
}
Code language: Dart (dart)
Результаты выполнения
true
true
false
true
true
true
true
true
true
true
true
true
trueCode language: JavaScript (javascript)
Разница между == и identical()
void main() {
var a = [1, 2];
var b = [1, 2];
// При сравнении List через == проверяются ссылки объектов; a и b — разные массивы, поэтому результат false
print(a == b);
// Функция identical проверяет, совпадает ли объект в памяти; a и b — разные массивы, возвращает false
print(identical(a, b));
// Переменная c напрямую ссылается на a, они указывают на один объект, identical вернет true
var c = a;
print(identical(a, c));
}
Code language: PHP (php)
Дополнение: чтобы сравнить содержимое двух списков, используйте функцию listEquals
import 'package:flutter/foundation.dart';
listEquals(a, b); // true, выполняет сравнение каждого элемента массиваCode language: JavaScript (javascript)
Сравнение строк
Для сравнения строк можно использовать только операторы == и !=
void main() {
// Операции отношения и равенства для строк
print("apple" != "banana"); //true
print("apple" == "apple"); //true
//print("zoo" > "apple"); // Ошибка: для строк недопустимы операторы > < >= <=, проверка равенства только через == !=
// Сравнение булевых значений на равенство
print(true == true); //true
print(true != false); //true
}
Code language: PHP (php)
Операторы отношения в сочетании с арифметическими операторами
Из предыдущих уроков мы знаем правило приоритета: арифметические операции > операции отношения. Сначала вычисляются сложение, вычитание, умножение и деление, затем выполняются сравнения по величине и равенству;
void main() {
// Сначала вычисляются арифметические выражения с обеих сторон, потом происходит сравнение
print(10 + 5 == 3 * 5); // 15 == 15 → true
print(20 - 3 != 8 + 9); // 17 != 17 → false
print(12 + 4 > 5 + 6); // 16 > 11 → true
print(9 - 7 < 10 - 1); // 2 < 9 → true
print(6 + 2 >= 4 * 2); // 8 >= 8 → true
print(15 - 8 <= 3 + 5); // 7 <= 8 → true
}Code language: PHP (php)
В примере выше сначала рассчитываются математические выражения с обеих сторон оператора отношения, после чего сравниваются полученные результаты.