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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 我为你着迷 金牌黑马   /  2014-7-26 15:59  /  1795 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.util.*;
  2. class Person
  3. {
  4.         private String name;
  5.         private int age;
  6.         Person(String name,int age)
  7.         {
  8.                 this.name=name;
  9.                 this.age=age;       
  10.         }       
  11.         public boolean equals(Object obj)
  12.         {
  13.                 if(!(obj instanceof Person))       
  14.                                         return false;
  15.                                        
  16.                 Person p=(Person)obj;
  17.                
  18.     return this.name.equals(p.name)&&this.age==p.age;
  19.         }
  20.        
  21.   public String getName()
  22.   {
  23.           return name;       
  24.   }
  25.   public int getAge()
  26.   {
  27.           return age;       
  28.   }
  29. }

  30. class ArrayListTest2
  31. {
  32.   public static void sop(Object obj)
  33.   {
  34.           System.out.println(obj);       
  35.   }
  36.   
  37.   public static void main(String[] args)
  38.   {
  39.           ArrayList al=new ArrayList();
  40.           al.add(new Person("lisi1",30));
  41.           al.add(new Person("lisi2",32));
  42.           al.add(new Person("lisi2",32));
  43.           al.add(new Person("lisi3",33));
  44.           al.add(new Person("lisi4",35));
  45.           al.add(new Person("lisi4",35));
  46.          
  47.          
  48.           al=singleElement(al);
  49.          
  50.           Iterator it=al.iterator();
  51.          
  52.           while(it.hasNext())
  53.           {
  54.                   Person p=(Person)it.next();//要做强转的动作
  55.                   sop(p.getName()+"::"+p.getAge());
  56.           }
  57.   }
  58.   
  59.   public static ArrayList singleElement(ArrayList al)
  60.         {
  61.                 //定义一个临时容器‘
  62.                 ArrayList newAl=new ArrayList();
  63.                
  64.                 Iterator it=al.iterator();
  65.                
  66.                 while(it.hasNext())
  67.                 {
  68.                         Object obj=it.next();
  69.                        
  70.                         if(!newAl.contains(obj))
  71.                             newAl.add(obj);       
  72.                 }
  73.                 return newAl;
  74.         }
  75. }
复制代码
大家好  我有一个小问题  就是关于Person类中复写了equals方法中的this,this到底是代表哪个对象呢?麻烦帮忙解答下,谢谢。

10 个回复

正序浏览
this代表本类对象也就是你的代码中刚进来的那个对象,就好像你的例子中,假如里面有了(“lisi1”,30),而this就代表(“lisi2,32”),
回复 使用道具 举报
对,就是你说的那样
回复 使用道具 举报
blue_sky 发表于 2014-7-26 16:10
应该是调用它的那个Person对象吧!!

有的人说是Object对象  有的人说是Person类对象  都把我整蒙了 其实我觉得应该也是Person类对象调用的。 代表本类的对象。 是吧  你觉得呢
回复 使用道具 举报
简单一句话,谁调用这个this就代表谁
回复 使用道具 举报
this代表它所在函数所属对象的引用
回复 使用道具 举报

也就是代表Object类的对象 是吧
回复 使用道具 举报
赵洋洋 发表于 2014-7-26 16:30
obj的对象,表示obj对象的属性值与p对象的属性值相同

obj的对象  奥 原来是这样  明白了 谢谢你啊 亲  
回复 使用道具 举报
obj的对象,表示obj对象的属性值与p对象的属性值相同
回复 使用道具 举报
代表的本类对象
回复 使用道具 举报
应该是调用它的那个Person对象吧!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马