equals方法

两个需要重写的方法:toString方法、equals方法

  • ==判断两个引用变量,要求两个引用变量指向同一个对象时,才会返回true。

  • 【默认的equals方法】:Object提供的equals方法,判断两个对象相等的标准与==是完全一样的。

  • 重写equals方法:根据业务规则来提供两个对象相等的标准。实际项目中,用来作为equals比较的关键成员变量,通常并不需要使用全部的成员变量----只需要它们关键的成员变量即可。

  • 对于字符串:String已经重写了equals方法,只要两个字符串的字符内容相等,就会返回true。

class Goat
{
	private String color;
	private double weight;
	public Goat()
	{
	}
	public Goat(String color,double weight)
	{
		this.color = color;
		this.weight = weight;
	}
	public void setColor(String color)
	{
		this.color = color;
	}
	public void setWeight(double weight)
	{
		this.weight = weight;
	}
	public String getColor()
	{
		return this.color;
	}
	public double getWeight()
	{
		return this.weight;
	}
	@override
	public boolean equals(Object obj)
	{
		//this和obj指向同一个对象
		if(this == obj)
		{
			return ture;
		}
		//obj不为null,且obj必须为Goat
		if(obj != null && obj.getClass() = = Goat.class)
		{
			//对obj强转为Goat
			Goat target = (Goat)obj;
			//比较关键属性
			return this.color.equals(obj.color) && this.weight == obj.weight;
		}
	}
}
public class EqualsTest
{
	public static void main(String[] args)
	{
		Goat goat1 = new Goat("黑色",78.2);
		Goat goat2 = new Goat("黑色",78.2);
		//goat1和goat2分别指向两个不同的对象,因此==判断返回false
		System.out.println(goat1 == goat2); 
		System.out.println(goat1.equals(goat2)); 
		
	}
}
一、实验目的 掌握根据实际需求设计Java类的方法; 掌握Java中继承的使用方法; 掌握Java中package的概念和使用方法; 掌握静态方法的定义和使用方法; 掌握Object类中equals方法和toString方法的覆盖方法。 二、实验内容 1、设计一个名为figure的图形软件包(package)。包中包含三角形、矩形、圆三个类。要求:(1)每个类都要构造方法并为成员设置get和set方法;(2)每个类都要有计算周长和面积的成员方法;(3)完成该软件包后的编码后,在另一个包的含有main方法的类中编写代码,分别使用图形软件包中的三个类,生成三个对象,并打印出其周长和面积。 2、编写类Factorial,为其添加两个静态方法方法名自定义)。其中一个使用递归计算n的阶乘,一个使用非递归计算n的阶乘。构造main方法进行测试。 3、按照要求使用Java进行编码。 设计一个教师类Teacher,属性有编号(no)、姓名(name)、年龄(age)、所属学院(seminary),为这些属性设置相应的get和set方法; 为Teacher类重写equals方法;(当两个教师对象的no相同时返回true) 重写Teacher类的toString方法,通过该方法可以返回“编号为**、姓名为**、年龄为**的**学院老师”形式的字符串。 构造main方法进行测试。 4、设计一个带表头的单链表(链表中的元素属于同一类型对象,但对象的类型可以随意),提供以下操作:(1)insert:在某个位置插入对象;(2)delete:在某个位置删除对象;(3)delete:删除链表中与x相同的元素;(4)size:返回当前链表中对象的个数;(5)isEmpty:判断链表是否为空;(6)traverse:遍历链表,打印出所有的元素;(7)getData:取得某个位置的对象。构造main函数进行测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值