Java的超类Object和重写toString()、equals()

Object

  • Object 类 是 Java中,所有类的 父类,Object 是 Java中的超类
  • Object 中的 所有 public,protected 修饰的方法 都会被 子类 继承

toString()

  • println() 会将传入的任何内容,在控制台 以字符串的形式进行打印
  • 将 对象 以 字符串的形式表示 主要是 通过 Object 类中的 toString() 方法实现的
    toString(): 就是为了将对象以字符串的形式表示,Object 中的 toString 默认是返回的对象地址
  • 打印一个对象 就是打印这个对象的 toString() 方法
public String toString(){
	// 此处我们返回什么,打印时就会输出什么
	return  String.format("People2{name:%s,age:%d,height:%f,weight:%f,sex:%s}",name,age,height,weight,sex);
}

equals()

为何要重写equals():因为Object提供的equals方法(底层也是==)比较的是地址。不满足我们的需求
重写equals方法的目的:比较两个对象内容是否相等

public boolean equals(Object obj){
	// 如果 传入的对象 和 this 地址相等
	if(this == obj) return true;
	// 如果两个对象地址不相等,判断 obj 是否为空
	if(obj == null) return false;
	// 判断两个对象的 类型是否 相等
	// 获取 一个 对象的 类型,通过 对象的 getClass() 方法
	if(this.getClass() != obj.getClass()) return false;

	// 如果 两个对象是同种类型,那么 进行属性值的比较
	People2 p = (People2) obj;// 类型根据自己的类名决定

	// 比较两个人的 名字 是否相等
	// Objects.equals(a,b); 比较两个对象的内容是否相同的工具类,解决了可能空指针的问题
	if(!Objects.equals(this.name,p.name)) return false;
	// 如果名字相同,比较年龄
	if(this.age != p.age) return false;
	// 如果年龄相等,比较身高
	// 比较小数,会有精度损失(计算机无法直接存储小数),此处省略
	// 最后比较性别
	if(!Objects.equals(this.sex,p.sex)) return false;
	return true;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值