CS(ComputerScience)

동일성과 동등성

GREEN.1229 2021. 7. 21. 19:42

안녕하세요. 그린입니다🟢

이번 포스팅에서는 동일성과 동등성에 대해 알아보겠습니다💁🏻

 

동일성과 동등성 그냥 알아보기전 뜻풀이부터 나름대로 추측해볼까요?

동일성은 A와 B가 전부 같은 즉 동일할때 쓰인다고 보이고,

동등성은 A와 B가 완전히 같진 않지만 같은 부분들이 있어 동등하게 볼 수 있다? 라고 느껴집니다.

 

그럼 조금 더 자세히 객체지향을 생각하며 알아보겠습니다.

 

객체지향에서는 두개의 A와 B 객체가 있다고 가정합시다!

그럼 A와 B의 객체는 서로 다른 주소값을 같습니다.

이 경우에는 A와 B가 같은 주소값을 가르키기 않기에 완전히 같다고 할 수 없습니다.

 

즉 위의 개념으로 동일성과 동등성을 간략히 정리해보겠습니다.

 

 - 동일성: A와 B의 객체가 완전히 같은 경우를 의미

 - 동등성: A와 B의 객체가 같은 정보를 가질 경우를 의미

 

조금은 감이 오시나요?

우리는 == 연산자로 같은지를 파악할때 자주 사용합니다.

이는 원시타입 자료형에서 같은지를 파악할때 자주 사용하는데 객체에서는 ==가 해당 객체의 주소값을 비교하는것입니다.

즉, 동일성을 비교한다고 볼 수 있습니다.

 

그렇다면 동등성은 어떻게 비교할까요?

equal 연산자를 이용해 같은 정보를 가진 객체인지 비교해줄 수 있습니다.

 

즉 코딩을 하다 동일성과 동등성이 헷갈려 조건의 비교가 안되는 상황이 많았습니다.

예를들어, 객체간 id 값을 비교해줘야하는 부분에서

A.id == B.id 로 비교하지 않고

A == B를 하게되어 발생한 문제도 있습니다.

 

이 두 차이를 잘 인지하여 즐거운 코딩을..💁🏻