黑马程序员技术交流社区

标题: 求大神指教 [打印本页]

作者: 13922919272    时间: 2015-2-2 14:20
标题: 求大神指教
import java.util.*;
class Person
{
        private String name;
        private int age;
        Person(String name,int age)
        {               
                this.name=name;
                this.age=age;
        }
        public boolean equals(Object obj)//复写Object类中的equals方法 就这个方法搞不懂求解救
        {
                if(!(obj instanceof Person))
                {
                        return false;
                }
                Person p=(Person)obj;
                return this.name.equals(p.name)&&this.age==age;
        }
        public String getName()
        {
                return name;
        }
        public int getAge()
        {
                return age;
        }
       
}
class ArrayListTast
{
        public static void sop(Object obj)
        {
                System.out.println(obj);
        }
        public static void main(String[] args)
        {
                ArrayList al=new ArrayList();
                al.add(new Person("lisi01",23));
                al.add(new Person("lisi01",23));
                al.add(new Person("wangwu",22));
                al.add(new Person("lisi01",23));
                al.add(new Person("lisi02",25));
                al.add(new Person("lisi01",23));

                Iterator it=al.iterator();
                while(it.hasNext())
                {
                        Person p=(Person)it.next();
                        sop(p.getName()+"..."+p.getAge());
                }
        }
        public static ArrayList singleElement(ArrayList al)
        {
                ArrayList Al=new ArrayList();
                Iterator it=al.iterator();

                while(it.hasNext())
                {
                        Object obj=it.next();
                        if(!Al.contains(obj))
                                Al.add(obj);
                }
                return Al;
        }
}

作者: janstk    时间: 2015-2-2 14:26
if(!(obj instanceof Person)) //如果不是属于Person或者Person子类的一个实例的话,就返回false.
                {
                        return false;
                }
                Person p=(Person)obj; //类型强转。
                return this.name.equals(p.name)&&this.age==age; //判断name与age是否相同。
作者: 13922919272    时间: 2015-2-2 14:27
janstk 发表于 2015-2-2 14:26
if(!(obj instanceof Person)) //如果不是属于Person或者Person子类的一个实例的话,就返回false.
         ...

那下面那个equals 是哪个类中的
作者: janstk    时间: 2015-2-2 14:29
13922919272 发表于 2015-2-2 14:27
那下面那个equals 是哪个类中的

this.name是一个String类的实例。而equals是String类中的。
作者: 13922919272    时间: 2015-2-2 14:30
janstk 发表于 2015-2-2 14:26
if(!(obj instanceof Person)) //如果不是属于Person或者Person子类的一个实例的话,就返回false.
         ...

this.age 是本类中的  那个p.age属于谁的
作者: janstk    时间: 2015-2-2 14:32
13922919272 发表于 2015-2-2 14:30
this.age 是本类中的  那个p.age属于谁的

Person p=(Person)obj; //类型强转。
这里定义的p。
而p是通过obj强转而来的。
所以p.age是属于obj的。当然前提是obj是Person或Person子类的一个实例。
作者: 13922919272    时间: 2015-2-2 14:32
janstk 发表于 2015-2-2 14:29
this.name是一个String类的实例。而equals是String类中的。

好像有点懂了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2