たとえば、ある2つの変数の値がいずれも 10
であるとき、2つの変数の値は等値であるといいます。プログラミング言語によって異なりますが、型が一致することは求めていない場合(暗黙に型変換されてから比較する)や、そもそも型が異なると比較が行えない場合もありえます。
注意が必要なのが、オブジェクト指向プログラミングにおけるオブジェクトのように、2つのオブジェクトが同一のものであるかどうかを知りたいのか、2つのオブジェクトの内容が一致していることを知りたいのかを区別しなければならない場合があることです。「等値」は前者の考え方による一致であり、後者の考え方は「等価」と表現されます。たとえば、文字列型の異なるオブジェクト s1 と s2 があり、いずれもその内容が "Hello"
であるとき、s1 と s2 は等価ですが等値ではありません。
等値と等価を判定する方法はプログラミング言語ごとの違いが多く、用語にも混乱が見られることがあります。たとえば、等値であることを ==
や =
で表される演算子で判定できる言語が多いですが、こうした演算子を(等値でなく)等価演算子と呼ぶことは一般的になっています(演算子オーバーロードによって等価の比較に変更できる言語もある)。
また、多くの言語で、equals のような名称のメソッドが定義されています。基底にあたるクラスでは、2つのオブジェクトを等値で比較するように実装され、派生クラスでは等価による比較を行うようにオーバーライドすることができます。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
![]() |
管理者情報 | プライバシーポリシー |