[Java] 동일성 (Identity) / 동등성 (equality)

2023. 1. 9. 00:27기술 창고/Java

728x90
SMALL

동일성

동일성은 두 개의 객체가 완전히 같은 경우를 뜻한다.

좀 더 늘려서 말하자면 두 객체는 사실상 하나의 객체로 봐도 되고, 주소 값이 같아서 두 변수가 같은 객체를 가리키는 것과 같다.

즉, 주소 값이 동일한 경우를 동일하다고 말한다.

 

동일한지 알 수 있는 방법은 "==" 연산자를 통해 확인할 수 있다.

참고로 원시타입(Primitive Type)의 변수들은 객체를 참조하고 있는 것이 아닌 원초적인 변수들이므로 == 연산자를 사용했을 때 내용값이 같다면 동일하다고 판단한다.

 

 

동등성

두 개의 객체가 같은 정보값을 같고 있는 경우를 뜻한다.

동등성은 변수가 참조하고 있는 객체의 주소가 다르더라도 내용값만 같으면 동등하다고 말한다.

즉, 주소 값이 서로 다르더라도 값만 같으면 동등하다고 말한다.

 

동등한지 알 수 있는 방법은 "equals" 연산자를 통해 확인할 수 있다.

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

System.out.println(str1 == str2);
System.out.println(str1.equals(str2));

동일한 값을 가지고 있지만 new 로 새로 객체를 만들어 할당하였기 때문에 두 변수는 == 연산자로 비교하게 되면 서로 다른 주소를 가지고 있기 때문에 false 의 결과를 가진다.

equals 연산자로 비교하게 되면 값이 동일하기 때문에 true 의 결과를 가진다.

 

728x90
반응형
LIST

'기술 창고 > Java' 카테고리의 다른 글

[Java] 자바 컴파일 과정  (0) 2023.01.12
[Java] JVM (Java Virtual Machine)  (1) 2023.01.11
[Java] Java Map 내부 구현 파악  (0) 2023.01.06
[Java] Garbage Collector  (0) 2023.01.06
[Java] Call by Value / Call by Reference  (0) 2023.01.06