A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈嘉宾 中级黑马   /  2012-6-3 11:32  /  1443 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 陈嘉宾 于 2012-6-3 12:14 编辑

下面public boolean equals(Object obj) 这段话中的return this.name.equals(p.name)        &&        this.age==p.age;这个this调用的是谁?,是用谁的姓名跟年龄开始比较?
        {
                if(!(obj instanceof person))
                        return false;
                person p =(person)obj;
                //System.out.println(this.name"....."+p.name);

                return this.name.equals(p.name)        &&        this.age==p.age;
        }




class person
{
        private String name;
        private int age
        person(String name,int age)
        {
                this.name=name;
                this.age=age;
        }
public boolean equals(Object obj)
        {
                if(!(obj instanceof person))
                        return false;
                person p =(person)obj;
                //System.out.println(this.name"....."+p.name);

                return this.name.equals(p.name)        &&        this.age==p.age;
        }
        public String getName()
        {
                return name;
        }
        public int getAge()
        {
                return age:
        }
}
class ArrayListTest2
{
        public static void sop(Object obj)
        {
                System.out.println(obj);
        }
        public static void main(String[] args)
        {
                ArrayList al= new ArrayList();
                al.add(new preson("lisi01",30));//al/add(Object obj);//Object obj=new preson("lisi",30);
                al.add(new preson("lisi02",32));
                al.add(new preson("lisi02",32));
                al.add(new preson("lisi03",33));
                al.add(new preson("lisi04",35));
                al.add(new preson("lisi04",35));
               
                Iterator it =al.iterator();

                while(it.hasNext())
                {
                        person p=(person)it.next();
                        sop(p.getName()+"::"+p.getAge());
                }
}

public static ArrayList singleElement(ArrayList al)
        {
                ArrayList newAl= new ArrayList();
                Iterator it= al.iterator();

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

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1

查看全部评分

4 个回复

倒序浏览
比较总得有二个对象才能比吧(不排除自认为长的帅的人喜欢和镜子 里的自己比,   开个玩笑 ) !      这里的equals是当前对象与别的对象相比较;       例如  我现在不知道你多大了,  我想知道,  因此就会调用equals方法,   于是this指的是我,this.age是我的年龄,,obj指的是你,相应obj.age则是我想比较的年龄;       当我们二个人的姓名和年龄都相同时,我们就是同一个人了;   就这意思吧,  {:soso_e183:}

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1

查看全部评分

回复 使用道具 举报
  1. public boolean equals(Object obj)
  2.         {
  3.                 if(!(obj instanceof person))
  4.                         return false;
  5.                 person p =(person)obj;
  6.                 //System.out.println(this.name"....."+p.name);

  7.               [color=Red]  return this.name.equals(p.name)        &&        this.age==p.age;[/color]        }
  8.         public String getName()
  9.         {
  10.                 return name;
  11.         }
  12.         public int getAge()
  13.         {
  14.                 return age:
  15.         }
  16. }
复制代码
这里面的return this.name.equals(p.name)        &&        this.age==p.age;this调用的是本类的对象和通过Object obj参数传进来的对象进行比较。这个obj就是你自己定义的对象。而却比较的是2个对象的属性age和name 所以在设置参数的时候,不是传属性而是传对象,通过对象的来调用,最后返回的结果也是要对象而不是他的属性。
2,还有毕老师讲的,这个地方有些人传2个对象进去,那就是3个人在比较了。所以这个this就是一个本类对象,传进来的对象就和他比较。就好像你和别人比身高,只要一个人来和你比就可以了,2个来就是3个人比较了。

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1 赞一个!

查看全部评分

回复 使用道具 举报
只有在自己家里面才能调用 this 的 传进来的obj 那是客人
回复 使用道具 举报
谢谢明白了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马