동등성 동일성
동등성(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 |
---|