Object类

Object类

1.1 Object类概述
Object是Java中所有类的基类,万物都是Object。
	Object规定了每一个的唯一标记:
		hashCode方法
	比较方式 
		equals方法
	字符串期望方法
		String toString();
		
	线程操作相关方法:
		notify
		notifyAll
		wait
2.2 equals方法重写
boolean equals(Object obj);
	是Object类内规定的两个对象比较使用方法,如果两个对象为同一个对象,返回true,否则返回false
	【默认方式】
		比较参数对象和调用方法对象的空间首地址。
		地址相同的两个对象,一定是同一个对象。
/*                                                                  
 * 重写equals流程/内容                                                    
 * 1. 原则不变,地址相同的两个对象为同一个对象,返回true                                   
 * 2. 参数类型和当前调用方法的数据类型一致!!!【数据类型判断】                                 
 * 3. 比较两个对象中数据元素                                                   
 */                                                                 
@Override                                                           
public boolean equals(Object obj) {                                 
	// 1. 原则不变,地址相同的两个对象为同一个对象,返回true                               
	if (this == obj) {                                              
		return true;                                                
	}                                                               
	                                                                
	/*                                                              
	 *  2. 参数类型和当前调用方法的数据类型一致!!!【数据类型判断】                            
	 *  instanceof 关键字                                              
	 *  	obj instanceof Person                                   
	 *  	判断obj对应的数据到底是不是Person类型。是返回true,否则返回false               
	 */                                                             
	if (!(obj instanceof Person)) {                                 
		return false;                                               
	}                                                               
	                                                                
	/*                                                              
	 * 3. 比较两个对象中数据元素                                               
	 * 当前参数对象通过以上两步验证,可以明确不是同地址对象,同时和当前方法调用对象类型一致。       
	 * 可以明确obj引用数据类型指向的数据是一个Person对象。参数对象目前对外数据效果为Object            
	 * 类型。我们需要拔掉衣服看本质,【强制类型转换】                                      
	 */                                                             
	Person p = (Person) obj;                                        
	                                                                
	return this.id == p.id                                          
			/*                                                      
			 * this.name.equals(p.name)                             
			 * 该equals方法为String类型equals方法,也是重写Object类内的equals完成     
			 * 为了满足字符串比较使用。                                         
			 *                                                      
			 * 字符串比较绝对不允许使用 ==                                      
			 *                                                      
			 * 【必须明确每一个方法的执行者到底是谁!!!】                               
			 */                                                     
			&& this.name.equals(p.name)                             
			&& this.age == p.age;                                   
}                                                                   
2.3 hashCode方法重写
Java中的规定
	两个对象通过equals方法比较结果为true,要求hashCode结果一致。
在Object类内
	hashCode方法返回值数据是当前对象在内存空间中的地址十进制数据
@Override                                                
public int hashCode() {                                  
	/*                                                   
	 * Objects工具类方法                                      
	 * int hash(Object... values);                       
	 * 		... 不定长参数,要求当前参数的类型为Object类型,参数个数不限制。        
	 * 		不定长参数在方法内实际上是一个数组形式                          
	 * 		Object... ==> 方法内就是一个Object[]                
	 *                                                   
	 * hash方法可以将当前给予方法的参数进行hash计算,得到一个hash值。             
	 * 这里要求参与equals方法比较的成员变量,全部放入到hash方法中进行              
	 * 哈希值获取操作。                                          
	 */                                                  
	return Objects.hash(id, name, age);                  
}                                                        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值