Java语法之Object类

Object类时Java默认提供的类,是所有类的父类,它里面有好多便利的方法供我们使用

1.equals对象比较方法

Java语法之Object类_第1张图片

在我们看来,姓名年龄一样就应该是同一个人,但实际上运行结果却是false,看一下源码:

源码里面是在用俩个引用的值(也就是所谓的地址值)在进行比较,要想让它按我们的逻辑比较,我们就可以重写equals方法:

Java语法之Object类_第2张图片

注意,治理必须发生向下转型,因为我们要用到Person类的成员变量,而父类无法引用子类的变量,所以要将obj强转为Person类

其实编译器可以帮我们生成equals方法Java语法之Object类_第3张图片

2.hashCode方法

这是根据某个标准来获取哈希值

Java语法之Object类_第4张图片

我们来看一下源码:

源码又是native修饰的,我们无法得知其实现逻辑,但我们可以自己重写方法,让俩个名字年龄相同的人有相同的哈希值

先看一下编译器帮我们生成的重写方法,点击右键,生成,选择equals and hashCode

Java语法之Object类_第5张图片

Java语法之Object类_第6张图片

再进入Objects.hash方法:

Java语法之Object类_第7张图片

这里的values就是name,age;再进入Arrays.hashCode:

Java语法之Object类_第8张图片

a是什么呢?

是哈希值的计算标准,所以这样重写的方法,只要name age相同,哈希值就相同,如下结果:

你可能感兴趣的:(java,开发语言,Object类)