您的位置:首页 > 移动开发 > Objective-C

Object的equals方法和toString方法

2017-06-11 10:42 323 查看
Object:java语言中的上帝,所有类的父类,其中定义了所有对象都具备的。

Object类是Java中唯一没有父类的类

Object类是类层次结构的根,java中所以的类从根本上都继承这个类,其他所有的类,包括标准容器类,比如数组,都继承了Object类中的方法。

例子举例Object的equals方法和toString方法

class Person extends Object
{
private int age;
private String name;
Person(int age,String name)
{
this.age=age;
this.name=name;
}
//定义一个方法,判断两个Person对象是否同一个人
/*
* (non-Javadoc)
* @see java.lang.Object#equals(java.lang.Object)
* 不用自定义方法,判断对象是否相同,因为Object父类中,已经定义了这样的方法
* 直接使用就好,但是判断的内容是根据Person的特点定义的
* 需要保留父类的功能声明,定义子类功能的特有内容
* 使用覆盖
*/
public boolean equals(Object obj)
//Object obj=p2;-->Object obj=new Person();
{
//提高点效率,如果两个引用指向同一个对象,不用再转换并比较内容了,直接判断地址
if(this==obj)
return true;
//如果用obj.age是错误的,因为Object中没有age属性
//想要使用子类对象的特有属性必须向下转型
if(!(obj instanceof Person))
return false;
Person p=(Person)obj;
//如果判断姓名字符串是否相同,不要用==,字符串本身就是一个对象,使用String类的equals方法判断
return this.name.equals(p.name) && this.age==p.age;
}
//建立Person对象特有的字符串表现形式。只要覆盖toString方法即可
public String toString()
{
return "Person[age="+this.age+",name="+this.name+"]";
}
}

public class Obj {
public static void main(String[] args){
Person p1=new Person(24,"lisi");
Person p2=new Person(22,"lisi");
Person p3=new Person(24,"lisi");
System.out.println(p1.toString());
System.out.println(p1.equals(p3));
System.out.println(p1.equals(p2));//判断的是对象的内容
System.out.println(p1==p2);//判断的是对象的地址
}
}


运行结果

Person[age=24,name=lisi]
true
false
false
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java equals
相关文章推荐