黑马程序员技术交流社区

标题: 关于this的问题 [打印本页]

作者: 我为你着迷    时间: 2014-7-26 15:59
标题: 关于this的问题
  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到底是代表哪个对象呢?麻烦帮忙解答下,谢谢。

作者: blue_sky    时间: 2014-7-26 16:10
应该是调用它的那个Person对象吧!!
作者: lancerjs    时间: 2014-7-26 16:29
代表的本类对象
作者: 赵洋洋    时间: 2014-7-26 16:30
obj的对象,表示obj对象的属性值与p对象的属性值相同
作者: 我为你着迷    时间: 2014-7-26 18:29
赵洋洋 发表于 2014-7-26 16:30
obj的对象,表示obj对象的属性值与p对象的属性值相同

obj的对象  奥 原来是这样  明白了 谢谢你啊 亲  
作者: 我为你着迷    时间: 2014-7-26 18:30
lancerjs 发表于 2014-7-26 16:29
代表的本类对象

也就是代表Object类的对象 是吧
作者: 痞子、蔚    时间: 2014-7-26 22:29
this代表它所在函数所属对象的引用
作者: /mg依恋    时间: 2014-7-26 23:33
简单一句话,谁调用这个this就代表谁
作者: 我为你着迷    时间: 2014-7-27 00:40
blue_sky 发表于 2014-7-26 16:10
应该是调用它的那个Person对象吧!!

有的人说是Object对象  有的人说是Person类对象  都把我整蒙了 其实我觉得应该也是Person类对象调用的。 代表本类的对象。 是吧  你觉得呢
作者: 赵洋洋    时间: 2015-1-6 18:26
对,就是你说的那样
作者: 李票    时间: 2015-1-11 22:08
this代表本类对象也就是你的代码中刚进来的那个对象,就好像你的例子中,假如里面有了(“lisi1”,30),而this就代表(“lisi2,32”),




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