関係演算子とは、大小比較を行うための演算子のことです。数学でも頻繁に使用します。
関係演算子一覧表
| 演算子 | 解説 |
|---|---|
== | 等しい(値が一致するか判定) |
!= | 等しくない |
> | より大きい |
< | より小さい |
>= | 以上 |
<= | 以下 |
== 演算子は他のオブジェクトにも使用できます
== 等値演算子の核心ルール
== は2つの変数・オブジェクトが持つ値が同じか判定するために使います。もし2つの参照が完全に同一のメモリオブジェクトを指しているか厳密に確認したい場合は == ではなく専用関数の 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)
補足:2つのListの中身を比較したい場合はlistEqualsを使用します
import 'package:flutter/foundation.dart';
listEquals(a, b); // true、配列の各要素を1つずつ比較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)
上記例では、関係演算子の左右にある数式を先に計算し、その計算結果同士で比較を行います。
Previous: Dart 算術演算子
Next: Dart 型判定演算子