본문 바로가기
개발/JAVA

오브젝트의 동일성과 동등성

by ironwoong 2013. 10. 7.
반응형




<오브젝트의 동일성과 동등성>

 

자바에서 두개의 오브젝트가 같은가라는 말은 주의해서 써야 한다. 자바에서는 두개의 오브젝트가 완전히 같은

 

동일한(identival) 오브젝트라고 말하는 것과,동일한 정보를 담고 있는(equivalent) 오브젝트라고 말하는 것은 분명히

 

차이가 있다.전자는 동일성(identity) 비교라고 하고, 후자는 동등성(equality)비교라고 한다.

 

동일성은 == 연산자로, 동등성은 equals() 메소드를 이용해 비교한다.

 

두개의 오브젝트가 동일하다면 사실은 하나의 오브젝트만 존재하는 것이고, 두개의 오브젝트 레퍼런스 변수를

 

갖고 있을 뿐이다.두개의 오브젝트가 동일하지는 않지만 동등한 경우에는 두개의 각기 다른 오브젝트가

 

메모리상에 존재하는 것인데, 오브젝트의 동등성 기준에 따라 두 오브젝트의 정보가 동등하다고 판단하는 것일 뿐이다.

 

물론 동일한 오브젝트는 동등하기도 할것이다. 하지만 그반대는 항상 참은 아니다.

 

자바 클래스를 만들때 equals() 메소드를 따로 구현하지 않았다면, 최상위 클래스인 Object 클래스에 구현되어 있는

 

equals() 메소드가 사용된다. Object의 equals() 메소드는 두 오브젝트의 동일성을 비교해서 그결과를 돌려준다.

 

따라서 이때는 동일한 오브젝트여야지만 동등한 오브젝트라고 여겨질 것이다.




반응형

'개발 > JAVA' 카테고리의 다른 글

스프링의 기술에 대한 지식과 선택 기준 정립  (0) 2013.10.21
공통 프로그래밍 모델 -ioC/Di 서비스 추상화,AOP  (0) 2013.10.21
싱글톤 패턴  (0) 2013.10.07
디자인 패턴  (0) 2013.10.07
DAO의 분리  (0) 2013.10.07

댓글