Dart 関係演算子

関係演算子とは、大小比較を行うための演算子のことです。数学でも頻繁に使用します。

関係演算子一覧表

演算子解説
==等しい(値が一致するか判定)
!=等しくない
>より大きい
<より小さい
>=以上
<=以下

== 演算子は他のオブジェクトにも使用できます

== 等値演算子の核心ルール

== は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)

上記例では、関係演算子の左右にある数式を先に計算し、その計算結果同士で比較を行います。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です