== 与 ===

Java 中的操作符 ==
  • 如果是基本数据类型,比较的是

  • 如果是引用数据类型,比较的是地址

 

Kotlin中的操作符 == (structural equality) 和 === (referential equality) 及 equals

  • Kotlin 中的操作符 == 等价于 equals (除了Float和Double的某些情况)
val negZero = -0.0f
val posZero = 0.0f

println(negZero == posZero)         //true
println(negZero.equals(posZero))    //false
println(negZero === posZero)        //true
  • 如果是基本数据类型,=== 等价于 ==

  • 如果是引用数据类型,=== 比较的是地址,即是否指向同一个对象;== 用于比较对象的结构是否相等(对象的结构就是属性和方法),注意只有是data class的情况下,对于normal class不同对象的结构会判定为不同

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 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

 

Javascript的操作符 == 和 === (strict equality operator)

  • == 先检查两个操作数的数据类型,如果相同,就进行 === 的比较,如果不同,则进行一次类型转换,转为相同类型后再进行比较。(比如一个是字符串,一个是数值,那么把字符串转为数值后再进行比;又比如一个操作数是null,一个是操作数是undefined,就相等)
  • ===进行比较时,如果类型不同,直接就是false

 

posted on 2023-03-28 18:40  joannae  阅读(19)  评论(0编辑  收藏  举报

导航