Object类

JAVA的类主要划分为三种
(1)JDK提供的官方类库
(2)第三方提供的类库(工具、框架)
(3)开发自定义类

Object

object是JDK中的一个类,是所有类的直接父类或间接父类

重写Object类

主要讲toString()、equals()、hashCode()

public String toString() :以字符串的形式返回对象的信息;
public boolen equals(object obj) :判断两个对象是否相等;
public native int hashCode(): 返回对象的hash值

1.toString()

public class People {
    private int id;
    private String name;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Override
    public String toString() {
        return "人类\t" +
                "编号=" + id +
                ", 姓名=" + name  ;
    }
}
public class Test {
    public static void main(String[] args) {
        People people = new People();
        people.setId(1);
        people.setName("胡一");
        System.out.println(people);
    }
}

2.equals()
==:比较的永远是变量的值(对象的存储地址)
equals:判断两个对象是否相等
equals重写:

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        People people = (People) o;
        return id == people.id &&
                Objects.equals(name, people.name);
    }
People people = new People();
        people.setId(1);
        people.setName("胡一");
        System.out.println(people);
        People people1 = new People();
        people.setId(1);
        people.setName("胡二");
        Integer a =1;
        Integer b = 1;
        System.out.println(people.equals(people1));  //false
        System.out.println(a.equals(b));  //true

3.hashCode
用来获取对象的散列值,散列值是根据对象的内存地址和对象的信息映射出来的一个数值。
效率高于equals

任何两个对象的内存地址肯定不一样,但实际开发如果两个对象的属性值完全一样的时候就认为同一个对象,那么散列值也相同。

实际开发通过equals和hashCode一同使用来判断两个对象是否相同,首先判断两个对象的散列值是否相同,若散列值不同则一定不同,若散列值相同可能对象不同,这时需要通过equals来进一步判断,最终得出是否相等。

   @Override
    public int hashCode() {
        return this.id*this.name.hashCode();
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值