java第八集 object中toString、equals方法

一、java中所有的类都直接或间接的继承于Object类,自动的拥有Object类的所有方法. toString方法用于输出一个对象的内容.

package k4;
class Animals {
	private String name;
	private String type;
	public Animals(String name, String type) {
		super();
		this.name = name;
		this.type = type;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getType() {
		return type;
	}
	public void setType(String type) {
		this.type = type;
	}
	@Override//重写string方法
	public String toString() {
		return "Animals [name=" + name + ", type=" + type + "]";
	}
}
public class Animal{
	public static void main(String[] args) {
		Animals a1=new Animals("旺财","中华田园犬");
		//Animal继承Object类,因此继承了toString方法
		//toString方法用于将对象的内容转换为String
		//Object类的toString方法将返回对象所属的类以及哈希码
		//可以重写toString方法,以获得格式化的对象的内容
		String str = a1.toString();
		System.out.println(str);
		//没有重写tostring方法时,调用tostring方法返回k4.Animals@15db9742
		//重写tostring方法后,调用tostring方法返回Animals [name=旺财, type=中华田园犬]		
		System.out.println(a1);//System.out.println(Object x)内部会自动调用对象的toString方法
	}//System.out.println(a1)等价于System.out.println(a1.toString)
}

二、Object类的equals方法用于比较两个对象是否相等. Object类的equals方法是使用==来比较.==比较的是对象的引用是否相等.
可以重写euqals方法来比较对象的属性。

package k4;
class Client{
	private int id;

	public Client(int id) {
		super();
		this.id = id;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	@Override
	public int hashCode() {//里面为哈希算法,得到int类型的整数值
		final int prime = 31;
		int result = 1;
		result = prime * result + id;
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)//地址是否一样 ,this代表调用equals方法的当前对象,(c1.equals(c2)),this指对象c1
			return true;
		if (obj == null)//自己能调用方法,不为空,如果传递进来的对象为空,则肯定为false
			return false;
		getClass方法用于获取对象所属的类
		if (getClass() != obj.getClass())//如果对象所属类型都不一样,那肯定为false
			return false;
		Client other = (Client) obj;//将传进来的对象强制类型转换为Client,并赋值给other
		if (id != other.id)//比较id值
			return false;
		return true;
	}
	
}
public class day082201 {
	public static void main(String[] args) {
		Client c1=new Client(35);
		Client c2=new Client(35);//c1和c2是两个不同的对象,自然地址不一样,但他们的内容是一样的,即id一样
		
		//在对象之间使用==比较的是对象的地址是否相同
		System.out.println(c1==c2);
		
		//使用从Object类继承来的equals方法来比较对象是否相等
		//Object类的equals方法内部比较的是对象的地址,false
		//可以重写euqals方法(重写后比较的是对象的内容)来比较对象的属性,true(没重写为false,比较的还是对象的地址)
		System.out.println(c1.equals(c2));//false,true
		
		//如果需要比较两个对象的内容,需要重写equals方法	
		
		
		// Client c3 = null; //在一个null对象上调用方法会导致NullPointerException
		 //c3.equals(c1);
	
	}

}

hashCode方法 Object类的hashCode方法将返回对象的哈希码,哈希码是一个整数值,这个数值跟对象的内容有直
接关系。 Object类的hashCode方法简单的使用对象的内存地址作为哈希码,但是并不符合hashCode方法的意义。
哈希码是对于对象的属性使用hash算法得到的一个整数值。这个整数值相当于对象的摘要。相同对象的哈希码总是
相同的,不同对象的哈希码也可能相同。
可以重写hashCode方法,以保证hashCode方法的意义。
如果重写了equlas方法,那么也应该重写hashCode方法,从而保证相同的对象的哈希码也相同。 hashCode方法应
用于集合中的数据结构:哈希表。
如果要将对象放入哈希表中,那么必须重写equals和hashCode方法。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值