第一行代码(3)--------数据类(equals(),hashCode(),toString()方法)【java和kotlin的区别】

本文对比了Java和Kotlin中数据类对于equals()、hashCode()和toString()方法的处理。在Java中,数据类需要手动重写这三个方法以确保对象比较的正确性,而在Kotlin中,使用data关键字声明的数据类会自动生成这些方法。示例展示了如何在Java中创建Phone2类并重写相关方法,以及在Kotlin中声明Phone数据类并直接使用其默认实现。
摘要由CSDN通过智能技术生成

一 JAVA

  1. 数据类通常需要重写equals(),hashCode(),toString()方法。
  2. 其中,equals方法用于判断两个数据类是否相等;hashCode方法作为equals的配套方法,也需要一起重写
public class Phone2 {
    String brand;
    double price;

    public Phone2(String brand, double price) {
        this.brand = brand;
        this.price = price;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj instanceof Phone2) {
            Phone2 other = (Phone2) obj;
            return other.brand.equals(brand) && other.price == price;
        }
        return false;
    }

    @Override
    public int hashCode() {
        return brand.hashCode() + (int) price;
    }

    @Override
    public String toString() {
        return "Phone2{" +
                "brand='" + brand + '\'' +
                ", price=" + price +
                '}';
    }
}
    val phone3=Phone2("XiaoMi", 3799.00)
    val phone4=Phone2("XiaoMi", 3799.00)

    println(phone3.toString())  //输出:Phone2{brand='XiaoMi', price=3799.0}
    println(phone3 == phone4)  //输出:true

二 KOTLIN

  1. data关键字 声明数据类,不用重写equals和hashCode方法
    kt自动生成equals,hashcode,toString方法
//Phone数据类(加data关键字)
data class Phone(val brand: String, val price: Double)
    val phone1 = Phone("XiaoMi", 3799.00)
    val phone2 = Phone("XiaoMi", 3799.00)

    println(phone1) //输出:Phone(brand=XiaoMi, price=3799.0)
    println(phone1 == phone2) //true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值