동등성
13 Jan 2018==
- 값을 비교한다.
- 객체의 경우 equals를 호출해서 비교한다.
vs 자바 ==
자바는 원시타입인 경우 값이 같은지, 참조 타입인 경우 주소가 같은지 비교한다.
===
- 주소를 비교한다.
equals
- 값을 비교한다
equals vs ==
- equals는 == 연산자와 마찬가지로 변수 또는 개체의 내용을 비교하지만 Float 및 Double 비교의 경우 다르게 동작한다.
- equals는 부동 소수점 산술을위한 IEEE 754 표준에 동의하지 않는다.
examples
Primitive 타입
val int1 = 10
val int2 = 10
println(int1 == int2) // true
println(int1.equals(int2)) // true
println(int1 === int2) // true
wrapper class
val first = Integer(10)
val second = Integer(10)
println(first == second) //true
println(first.equals(second)) //true
println(first === second) //false
custom class object
class Employee (val name: String)
val emp1 = Employee("Suneet")
val emp2 = Employee("Suneet")
println(emp1 == emp2) //false
println(emp1.equals(emp2)) //false
println(emp1 === emp2) //false
println(emp1.name == emp2.name) //true
println(emp1.name.equals(emp2.name)) //true
println(emp1.name === emp2.name) //true
data class
data class Employee (val name: String)
val emp1 = Employee("Suneet")
val emp2 = Employee("Suneet")
println(emp1 == emp2) //true
println(emp1.equals(emp2)) //true
println(emp1 === emp2) //false
println(emp1.name == emp2.name) //true
println(emp1.name.equals(emp2.name)) //true
println(emp1.name === emp2.name) //true
float values
val negZero = -0.0f
val posZero = 0.0f
println(negZero == posZero) //true
println(negZero.equals(posZero)) //false
println(negZero === posZero) //true