본문 바로가기
Jave & Kotlin

Kotlin - 코틀린의 동일성과 동등성 비교 (Java와 차이점)

by devLog by Ronnie's 2022. 7. 3.

들어가며


비교해야될 대상의 값이 같은지 아니면 주소값이 같은지를 비교해야될때 동등성 연산자 또는 동일성 연산자를 사용한다.

 처음에 코틀린을 접했을 때 이미 자바로 해오다가 코틀린을 접했던 터라 자연스럽게 자바에서 사용하던 방식으로 하게되었는데 차이가 있어 정리하게 되었다.

 

먼저 자바와 코틀린의 차이를 알아보기 전에 동일성과 동등성의 개념을 먼저 알아보자

 

 

동일성과 동등성


말만 들으면 비슷해보이지만 뜻은 다르다.

 

먼저 동일성이란, 두 개의 객체가 완전히 같은 경우를 의미한다.

동등성이란, 두 개의 객체가 같은 정보를 갖고 있는 경우를 의미한다. 

 

객체가 들고 있는 값을 비교를 하기 위해서는 동등성 비교를 하고, 객체 자체를 비교하기 위해서는 동일성 비교를 하면 된다.

 

 

자바에서의 동등성 비교와 동일성 비교


자바에서는 동일성 비교를 위해서는 ‘==‘ 연산자를 사용한다.  '==' 연산자를 사용하는 경우 주소값으로 비교를 하게 된다. 그리고 동일성 비교를 위해서는 '==' 연산자가 아닌 'equals()' 메서드를 사용하여 값을 비교할 수 있다.

같은 맥락으로 코틀린에서 '==' 과 'equals()' 를 사용해서는 안된다.

 

 

 

코틀린에서의 비교


코틀린에서는 ==과 equals() 가 동일하게 원시타입을 비교할때 사용이 된다. == 는 내부적으로 equals() 를 호출한다.

 

그렇기 때문에 코틀린에서 참조타입의 주소값을 비교하고 싶다면 '===' 연산자를 사용하면 된다. , 자바에서의 주소값 비교인 '==' 코틀린에서의 '===' 동일한 의미를 지닌다.

댓글