[Java] 동일성과 동등성

링딩·2023년 4월 10일
0

Computer Science

목록 보기
26/49




1. 동일성(identity)과 동등성(equality)?


📕 동일성(identity)

◽ 정의

동일성은 동일하다는 뜻으로 두 개의 객체가 완전히 같은 경우를 의미한다.
=> 즉, 두 객체가 사실상 하나의 객체로 봐도 무방하며, 주소 값이 같기 때문에 두 변수가 같은 객체를 가리키게 된다.


📕 동등성(equality)

◽ 정의

동등성은 동등하다는 뜻으로 두 개의 객체가 같은 정보를 갖고 있는 경우를 의미
=> 동등성은 변수가 참조하고 있는 객체의 주소가 서로 다르더라도 내용만 같으면 두 변수는 동등하다고 이야기할 수 있다.

  • 해당 변수가 동등한지 equals 연산자를 통해 판별할 수 있다.

String str1 = new String("aaa");
String str2 = new String("aaa");

System.out.println(str1 == str2);
System.out.println(str1.equals(str2));
  • 다른 String 객체를 메모리에 할당하였기에
    -> str1과 str2가 가리키는 객체의 주소 값은 다르므로 동일하지 않다.
  • BUT! 🤔
    String이 재정의한 equals() 연산자에 의해 두 객체의 내용이 같으므로 동등하다고 할 수 있다.



.
.

Q. ==연산자와 equals 연산자의 차이가 무엇인가요?

💬 답변

== 연산자는 객체의 동일성을 판별하기 위해 사용하며, equals 연산자는 두 객체의 동등성을 판별하기 위해 사용한다.

equals() 연산자는 재정의하지 않으면 내부적으로 == 연산자와 같은 로직을 수행하므로 차이가 없다.
=> 따라서 equals() 연산자는 각 객체의 특성에 맞게 재정의를 해야 동등성의 기능을 수행한다.





출처

steady-coding님의 글을 참조하여 작성하였습니다.

profile
초짜 백엔드 개린이

0개의 댓글