Kotlin 동등성 연산

HEETAE HEO·2022년 7월 3일
0
post-thumbnail

동등성 및 동일성

동등성(equality)

  • 두 개의 오브젝트가 완전히 동일한 것을 의미합니다.

  • 하나의 오브젝트만 존재하는 것이며 그 오브젝트를 참조하는 여러 개의 레퍼런스 변수를 갖고 있는 것을 의미합니다.

동일성(identity)

  • 동일한 정보를 가지고 있는 오브젝트를 의미합니다.

  • 메모리상에 각기 다른 오브젝트가 존재하는 것이며 각 오브젝트의 기준에 따라 동등하다고 판단합니다.

Java vs Kotlin

Java

  • Java에서 원시타입 비교시 ==를 사용합니다.
  • 참조변수에서 ==를 사용할 경우 주소값을 비교합니다.(동일성 검사)
  • Java에서 두 참조변수의 동등성을 알기 위해서는 equals를 사용해야합니다. (동등성 검사)

Kotlin

  • Kotlin에서는 Java와 달리 ==를 사용시 내부적으로 equals를 호출합니다.(동등성 검사)

  • 주소 값을 비교하고 싶다면 ===을 사용합니다.(동일성 검사)

Java

String a = new String("hello  world"); // 주소값 1
String b = new String("hello world"); // 주소값 2

System.out.println(a==b); // false
System.out.println(a.equals(b)); // true

Kotlin

val a : String = "hello world" 
val b : String = "hello world"

println(a == b) // true
println(a === b) // true

println(a === b) // true라고요???

String 객체는 String pool이라는 힙의 영역이 따로 존재하여 값을 String pool에 저장합니다. 만약 이미 String pool에 같은 값이 존재한다면 같은 주소를 참조하는 방식으로 동작합니다. 그래서 true값을 반환하는 것입니다.

references

https://noapps-code.tistory.com/143

profile
Android 개발 잘하고 싶어요!!!

0개의 댓글