Java中Object类常用的方法

本文深入解析Java.lang.Object类,作为所有类的基类,其重要性不言而喻。文章详细介绍了Object类的构造方法、equals()、hashCode()、toString()等核心方法,并探讨了这些方法的重写原则及应用场景。

Object类的概念

java.lang.Object 类是所有类层次结构的根类,任何类都是Object类的直接/间接子类。
直接指直接继承Object类,间接指先继承别的类再继承Object类

Object类的常用方法

  • Object( )
    无参方式构造对象,通常用于子类使用super( )方式调用
  • boolean equals(Object obj)
    (1) 用于判断调用对象是否和参数对象相等
    (2) equals( )方法在非空对象引用上实现相等关系(如果引用为空,空调用方法引发空指针异常)
    (3)该方法默认比较两个对象的地址,与 == 运算符的效果等价
    (4)若希望该方法比较两个对象的内容,则需要重写该方法
//由于从Object类中继承的方法不足以满足该类的需求,因此需要重写equals()方法比较(学号)内容
@Override
public boolean equals (Object obj){
    //1.调用对象和参数对象地址相同,内容一定相同
    if(this==obj){
		return true;
	}
	//2.调用对象不为空,参数对象为空,内容不相同
	else if(obj==null){
		return false;
	}
	//3.参数对象和调用对象类型相同,则比较两个对象的内容(学号)作为结果
	else if(obj instanceof Student){
	//使用强制类型转换让父类引用调用子类独有的方法
	Student ts = (Student)obj;
	if(this.getId()==ts.getId()){
			return true;
		}else{
			return false;
		}
	}
	//4.参数对象和调用对象类型不同,内容一定不同
	else{
		return false;
	}
}
  • boolean equals(Object obj)
    该方法被重写时,通常有必要重写hashCode( )方法
  • int hashCode( )
    (1) 用于获取调用对象的哈希码值(内容地址的编号)
    — 若equals( )方法比较两个对象相等,则各自调用hashCode( )结果必须相同
    — 若equals( )方法比较两个对象不相等,则各自调用hashCode( )结果应该不同
    (2) 若希望该方法与equals( )结果保持一致,需要重写该方法

总而言之,equals( )若相等,则hashCode( )相同;equals( )若不相等,则hashCode( )不相同.
若equals( )被重写,则不再代表内存地址,如果再用hashCode( )比较即用内存地址比较,因此不可保证调用对象和参数对象的一致性,所以重写equals( )方法后必须重写hashCode( )方法.

  • to String( )
    (1) 用于获取调用对象的字符串表示形式
    (2)若希望该方法返回更有意义的数据,需要重写该方法
    (3)当使用 print / println 打印引用或+连接引用时,自动调用该方法

小结

重写equals( )方法是为比较2个对象的内容是否相等
重写hashCode( )方法是为与equals( )方法的结果保持一致
重写to String( )方法是为结果返回更有意义的数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值