Kotlin에서 == vs === 차이
2025. 3. 18. 16:12ㆍ프로그래밍 언어/Kotlin 기초
728x90
반응형
주말마다 진행하는 프로그래머스 스터디에서는 다양한 언어가 공존한다.
Kotlin, C#, Swift, JavaScript.
여기서 JavaScript 소스코드를 보는데 “===” 연산자가 나왔다.
Kotlin에도 해당 연산자가 있는지 찾아보았다.
1. == (Structural Equality - 구조적 동등성)
- 두 객체의 값이 같은지 확인할 때 사용한다.
- 내부적으로 equals() 함수를 호출한다.
- 즉, 내용만 같으면 true가 나온다.
예제
data class Person(val name: String)
fun main() {
val person1 = Person("개발새발")
val person2 = Person("개발새발")
println(person1 == person2) // ✅ true (값이 같음)
println(person1.equals(person2)) // ✅ true (==는 equals()를 호출)
}
✔️ ==는 equals()와 같은 역할을 하기 때문에, 데이터가 같으면 true
2. === (Referential Equality - 참조적 동등성)
- 메모리 주소(참조)가 같은지 확인할 때 사용한다.
- 동일한 객체를 가리키고 있어야만 true가 나온다.
예제
data class Person(val name: String)
fun main() {
val person1 = Person("개발새발")
val person2 = Person("개발새발")
val person3 = person1 // 같은 객체를 참조
println(person1 === person2) // ❌ false (다른 객체, 메모리 주소 다름)
println(person1 === person3) // ✅ true (같은 객체를 가리킴)
}
✔️ ===는 "이거랑 이거, 진짜 같은 객체야?"라고 물어보는 거
✔️ 즉, 같은 메모리 주소를 가리킬 때만 true

728x90
반응형
'프로그래밍 언어 > Kotlin 기초' 카테고리의 다른 글
Kotlin에서 유용한 고차 함수 정리 (0) | 2025.02.27 |
---|---|
Kotlin 코딩테스트의 Kick! 우선순위큐 (Priority Queue) (0) | 2025.02.15 |
Kotlin inline 함수, 진짜 성능 최적화에 도움이 될까? (0) | 2025.02.07 |
Kotlin 상태 관리 | Sealed Class vs Enum Class 차이점 (0) | 2025.02.06 |
Kotlin에서 launch와 async는 무엇이 다를까? (0) | 2025.02.03 |