重写 toString() & equals() 方法

好久没有更新了,最近在易途学习java,把写课堂上的东西温习下

toString():制定一个对象的打印显示的内容
     当我们想打印一个引用数据类型的对象的时候
     如果不覆盖toString方法 会打印:类型@XXX

     为了打印对象能够得到一条有用的信息
     都会选择覆盖toString方法

     @Override
     public String toString(){
   return 拼装信息;
     }

 equals():制定一个类型的比较规则
  当我们的需求想要将内存里面不同的两个对象
  按照某种需求视为相等对象的时候[逻辑相等]
  需要覆盖equals方法
  如果没有覆盖的话 两个对象将比较地址 this == obj

  @Override
  public boolean equals(Object obj){
   //制定比较规则
  }

  面试题:
  ==和equals之间的区别?
   ==:判断左右两边的值是否相等
   如果是基本数据类型 比较数值是否相等
   如果是引用数据类型 比较地址是否相等

   equals:制定一个类型的比较规则
   程序员可以按照自己的意愿 将内存里面
   不同的两个对象视为相等对象
   比如:Sun公司通过覆盖String类里面的equals
   方法将两个字符串只要内容一样就视为相等对象

public class Exec5{
	public static void main(String[] args){
		Teacher tea1 = new Teacher("Tom",22,'男',4500.0);
		Teacher tea2 = new Teacher("Tom",22,'男',4500.0);
		System.out.println(tea1.equals(tea2));
		System.out.println(tea1);
	}
}
class Teacher{
	String name;
	int age;
	char gender;
	double salary;

	//创建对象的时候 直接对所有属性赋值
	public Teacher(String name,int age,char gender,double salary){
		this.name = name;
		this.age = age;
		this.gender = gender;
		this.salary = salary;
	}

	//打印老师对象的时候 直接显示:
		//XXX男/女老师 今年XXX岁 薪资是***
	@Override
	public String toString(){
		return name + gender + "老师 今年" + age + "岁 工资是***";
	}


	//只要两个老师的所有属性都一样 那么就视为相等对象
	@Override
	public boolean equals(Object obj){

		return this.name.equals(((Teacher)obj).name) &&
			this.age == ((Teacher)obj).age &&
			this.gender == ((Teacher)obj).gender &&
			this.salary == ((Teacher)obj).salary;
	}


}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值