10.9-Object类

Java默认继承object类,Java类都继承了object类的属性及方法

toString()

默认返回值为string类型 类名全称@0x(hashcode值)

例子

package day10_9;

import java.util.Arrays;

public class ObjectDemo {
	public static void main(String[] args) {
		int[] ary = {1,2,3};
		//此处默认调用了object类中的toString方法
		System.out.println(ary/*.toString()*/);
		//输出ary数组的内容
		System.out.println(Arrays.toString(ary));
	}
}

equals()

==作用相同,均为比较引用地址是否相等

引用相等:比的是对象的引用地址,比得是是否为同一个对象

对象相等:比的是对象中的数据,比的是对象中的内容

注意:一般情况下,在子类中需要重写equals(),以实现对象内容(对象数据)的比较

覆盖规则:

  1. 自反性:自己与自己比结果要返回true x.equals(x)->true

  2. 对称性:x.equals(y)->true y.equals(x)->true

  3. 传递性:x.equals(y)->true y.equals(z)->true z.equals(x)->true

  4. 一致性:x.equals(y)一开始的结果为true,后期只要不对x, y的属性做出任何的修改,再次使用x.equals(y)结果依旧为true

hashCode()

​ 原则上不同的对象调用object类中的hashcode()返回的值是不同的

  1. hashCode()要与equals()一同覆盖

    • 当两个对象equals()比较为true时,应该具有相同的hashCode值

    • 当两个对象equals()比较为false时,应具有不同的hashCode值

    • hashCode值要稳定,一个对象创建以后就不应该再发生变化

  2. 一般使用对象的OID值作为hashCode值,OID是对象的唯一编号,在项目中都是根据数据生成一个OID,就是数据库的主键(唯一约束性)

综合例子

最后更新于