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
반응형