언어/코틀린

동등성, 동일성 연산(==, ===)

ballde 2022. 7. 18. 11:02

동등성 동일성

동등성(equals)

  • 오브젝트 서로가 완전히 동일
  • 값이 같은지

동일성(==)

  • 동일한 정보를 가지고 있는 오브젝트
  • 같은 메모리에 다른 오브젝트가 존재하는 경우
  • 주소값이 같은지

자바

==

  • 원시 타입일 경우 두 피연산자의 값이 같은지 비교
  • 참조 타입일 경우 두 주소값을 비교 (동일성 검사)

equals

  • 참조타입의 동등 (동등성 검사)

코틀린

==

  • 원시타입일 경우 두 피연산자의 값이 같은지 비교
  • 참조 타입일 경우 equals로 비교 (== 가 내부적으로 equals)

===

  • 주소값을 비교하고 싶다면 ===을 사용

코틀린에서 주의할 점

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

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

a === b가 같은 경우

  • String pool이라는 힙 영역이 존재해서 저장한다. 그리고 만약 같은 값이 존재한다면 같은 주소를 참조하는 방식으로 동작한다.

'언어 > 코틀린' 카테고리의 다른 글

코틀린 범위 지정 함수(apply, run, with, let, also)  (0) 2022.07.18