[Kotlin] - 동등성 과 동일성이란 ?

명준쓰·2023년 7월 18일
0

안녕하세요, 오늘은 Kotlin에서 중요한 두 개념인 '동등성'과 '동일성'에 대해 다루려고 합니다. 이 두 개념은 프로그래밍에서 굉장히 중요하며, 여러 상황에서 두 값이나 객체를 비교할 필요가 있기 때문에 이해해두면 매우 유용합니다.

우선 각 용어의 의미부터 알아보겠습니다.

동등성 (Equality) : 두 객체가 같은 값을 가지는 경우를 가리키며, 코틀린에서는 '==' 연산자를 사용하여 확인합니다. 이는 객체의 내용 자체가 같은지를 검사합니다.

동일성 (Identity) : 두 객체 참조가 메모리 상에서 같은 객체를 가리키는 경우를 가리킵니다. 이는 코틀린에서 '===' 연산자를 사용하여 확인할 수 있습니다.

간단하게 말하면 동등성은 두 객체가 가지고 있는 값이 같은지를, 동일성은 두 참조가 실제로 같은 객체를 가리키는지를 검사합니다.

이제 이 개념들을 실제 코드 예제를 통해 알아보겠습니다.

동등성

아까 설명드렷듯 동등성은 두 객체의 구조가 동일한지를 비교합니다.

val a = "Hello"
val b = StringBuilder("He").append("llo").toString()
println(a == b) // true - 값이 같은지 확인 (동등성)

이렇게 두 객체가 같은 값을 가지고 있는지를 확인해 같은 값을 가지고잇다면 Boolean 타입으로 반환해줍니다.
코틀린에서 == 연산자는 자바의 equals()를 호출하는 것과 같습니다.

동일성

val a = "Hello"
val b = StringBuilder("He").append("llo").toString()
println(a === b) // false - 같은 객체를 참조하는지 확인 (동일성)

이렇게 두 객체의 값은 같지만 저장하고 있는 주소값은 다르기 때문에 ===으로 동일한지 비교하면 false를 반환합니다.

profile
개린이

1개의 댓글

comment-user-thumbnail
2023년 7월 18일

소중한 정보 감사드립니다!

답글 달기