44 java toString 方法 重写equals 方法

package com.wjl.zy131227;

/**
 * 打印对象 
 * toString 方法
 * @author Administrator
 *
 */
public class ToStringMethod {
	private String name;
	public ToStringMethod(String str)
	{
		this.name=str;
	}
	/**
	 * 系统输出该对象的自我描述
	 */
	@Override
	public String toString() {
		return "ToStringMethod [name=" + name + "]";
	}

	public static void main(String[] args) {
		ToStringMethod toStr1=new ToStringMethod("Tom");
		System.out.println(toStr1);//ToStringMethod [name=Tom]
		String str1="java";
		String str2="Database";
		String str3=str1+","+str2;
		System.out.println(str3);//java,Database
		
	}
}

package com.wjl.zy131227;

 class Person {
	//重写equals 方法,提供自定义的相等标准
	public boolean equals(Object obj)
	{
		//不加判断直接输出true
		return true;
	}
	
}
//定义一个Apple类
	class Apple
	{
		
	}
	
public class OverrideEqualsError
{
	public static void main(String[] args) {
		Person per=new Person();
		//Person的对象是否equals Apple对象?true
		System.out.println("Person的对象是否equals Apple对象?"+per.equals(new Apple()));
	}
	}
package com.wjl.zy131227;

class PersonOne
{
	private String name;
	private String idStr;
	//构造方法
	public PersonOne()
	{}
	//带参数的构造方法
	public PersonOne(String name,String idStr)
	{
		this.name=name;
		this.idStr=idStr;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getIdStr() {
		return idStr;
	}
	public void setIdStr(String idStr) {
		this.idStr = idStr;
	}
	//重写equals 方法,提供自定义的相等标准
	public boolean equals(Object obj)
	{
		//如果两个对象为同一个对象
		if(this==obj)
		{
			return true;
		}
		//当obj部位null ,且它是Person类的实例时
		if(obj != null && obj.getClass()==PersonOne.class)
		{
			PersonOne perObj=(PersonOne)obj;
			//并且当前对象的idStr与obj对i徐昂的idStr相等才可判断两者相等
			if(this.getIdStr().equals(perObj.getIdStr()))
			{
			return true;
		    }
		}
		return false;
		
	}
}

public class OverrideEqualsRight {

	public static void main(String[] args) 
	{
		PersonOne p1=new PersonOne("孙悟空", "10001");
		PersonOne p2=new PersonOne("孙行者", "10002");
		PersonOne p3=new PersonOne("大师兄", "10003");
		PersonOne p4=new PersonOne("孙悟空", "10001");
		
		System.out.println("p1和p2 是否相等:"+p1.equals(p2));//false
		
		System.out.println("p1和p4是否相等:"+p1.equals(p4));//true
	}

}
              /*
               正确的重写equals方法应该满足下列条件:
               1.自反性:对任意的x,xequals(x)一定返回true
               2.对称性:对于任意x和y,如果y。equals(x)返回true 则x。equals(y)也返回true
               3.传递性:对任意x,y,z,如果x。equals(y)返回true,y。equals(z)返回true,则x。equals(z)一定返回true
               4.一致性:对任意x,y,如果对象中用于比较的信息没有改变,那么无论调用x。equals(y)多少次
               。                                      返回的结果应该保持一致
               5.对于任何不是null的x,x。equals(null)一定返回false
               
               
               Object默认的equals()只是比较对象的地址,即Object类的equals
                                                       方法比较的结果与==运算符比较的结果完全相同,因此实际应用中需要重写equals方法
               
               
               
               * */




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值