プログラミングにおいて、2つの意味や振る舞いが同じであって、外部からみたとき同じであるとみなせることをいいます。
たとえば、文字列型の異なるオブジェクト s1 と s2 があり、いずれもその内容が "Hello"
であるとき、s1 と s2 は等価であるといいます。また、まったく同一の処理をおこなう関数を、等価な関数と表現することもあります。
よく似た用語に「等値」があります。こちらは文字通り、「2つの値が等しいこと」をいいます。さきほどの文字列型のオブジェクトの例では、2つのオブジェクトは異なる存在であり、異なるメモリアドレスに置かれていることになります。s1 と s2 が実際にはリファレンスであり、オブジェクトを指し示すものであるなら、等値によって比較をおこなうことは、メモリアドレスを比較する意味合いになるため等値ではありません。
等値と等価を判定する方法はプログラミング言語ごとの違いが多く、用語にも混乱が見られることがあります。たとえば、==
や =
で表され、一般に等価演算子と呼ばれている演算子によって比較を行える言語が多いですが、名前に反して、大抵これは等値を判定するものです(実態に合うように等値演算子と呼ぶこともあります)。なお、演算子オーバーロードによって等価の比較に変更できる言語もあります。
また、多くの言語で、equals のような名称のメソッドが定義されています。基底にあたるクラスでは、2つのオブジェクトを等値で比較するように実装されますが、派生クラスでは等価による比較を行うようにオーバーライドすることができます。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
![]() |
管理者情報 | プライバシーポリシー |