相等操作符的区别,在Data类和Regular类的情况下



使用Data类和normal类会产生不同的输出,这背后的原因是什么?

data class User(val a:String)                   
val obj1 = User("asd")
val obj2 = User("asd")
if(obj1 == obj2) println("true")    
if(obj1===obj2) println("true")
if(obj1.equals(obj2)) println("true")
//this gives the output of true for 1st and 3rd print statement.    

使用常规类

class User(val name: String)
val obj1 = User("asd")
val obj2 = User("asd")
if(obj1 == obj2) println("true")
if(obj1===obj2) println("true")
if(obj1.equals(obj2)) println("true")
//this does not print anything.

数据类比较实例的内容(在指针地址不同的情况下),不像常规类(只比较指针地址)

你可以从这个问题中查看data类的详细实现

最新更新