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方法
* */