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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵宇 中级黑马   /  2012-9-19 22:42  /  1552 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 赵宇 于 2012-9-25 08:43 编辑

public class EqualsTest
{
public static void main(String[] args)
{
  Student s1 = new Student("zhangsan");
  Student s2 = new Student("zhangsan");
  System.out.println(s1 == s2);
  System.out.println(s1.equals(s2));  
}
}
class Student
{
String name;
public Student(String name)
{
  this.name = name;
}

public boolean equals(Object anObject)       (此处为重写equals方法
{
  if(this == anObject)
  {
   return true;
  }

  if(anObject instanceof Student)
  {
   Student student = (Student)anObject;
   
   if(student.name.equals(this.name))            (从此处的 this.name的值是什么?)
   {
    return true;
   }
  }

  return false;
}
}

评分

参与人数 1技术分 +1 收起 理由
王德升 + 1 赞一个!

查看全部评分

6 个回复

倒序浏览
this是指在类中,自己的引用。

如果在类外,可以new一个对象,让一个引用指向对象,比如:Student s = new Student();s是引用,指向对象,需要使用对象的属性时,用s.age等。
而在类中,使用属性时,可以直接用,但如果有局部变量和属性名相同,那就要区别属性和局部变量,就用引用.属性,类中没有像s那样的引用,所以java在设计的时候就有一个叫this的关键字,来作为引用,处理这样的问题。

常见的在构造方法中如:
Student(int age){
this.age = age;
}

this.age是值属性;age是值参数。
回复 使用道具 举报
本帖最后由 冯心程 于 2012-9-19 22:58 编辑

当前对象实例的name值啊 你new的时候传的name实际参数是什么 this.name就是什么
this 。他表示的是当前对象

public class EqualsTest
{
public static void main(String[] args)
{
  Student s1 = new Student("zhangsan");
  Student s2 = new Student("zhangsan");
  System.out.println(s1 == s2);
  System.out.println(s1.equals(s2));  
}
}
class Student
{
String name;
public Student(String name)
{
  this.name = name;
}

public boolean equals(Object anObject)     
{
  if(this == anObject)
  {
   return true;
  }
  if(anObject instanceof Student)//这句话是判断传进来的这个anObject是不是Student类的实例
  {
   Student student = (Student)anObject;
   
   if(student.name.equals(this.name)) 从此处的 this.name的值是什么?)//这个this就是传进来的实例对象 所以this.name就是当前实例化对象的name值 也就是参数anObject的name
   {
    return true;
   }
  }
  return false;
}
}
一个类可以有多个实例化对象 为了方便操作每个实例化对象的属性方法 所以用this来表示当前的对象
回复 使用道具 举报
冯心程 发表于 2012-9-19 22:56
当前对象实例的name值啊 你new的时候传的name实际参数是什么 this.name就是什么
this 。他表示的是当前对象 ...

thank  u   懂了, 提前祝你中秋快乐。
回复 使用道具 举报
张 涛 发表于 2012-9-19 22:49
this是指在类中,自己的引用。

如果在类外,可以new一个对象,让一个引用指向对象,比如:Student s = new ...

同样的感谢
回复 使用道具 举报
表示是当前对象  谁调用它就是谁  就是你上面强转后的p
回复 使用道具 举报
本帖最后由 李泽巍 于 2012-9-20 13:08 编辑

this指当前使用这个方法的这个类的实例,描述起来不一定容易懂,我还是写个代码说吧,就拿你这个代码来说,
你的main函数里定义了两个Student实例,s1和s2,然后你用s1.equal(s2)调用了这个equal方法,那么,equal方法里的this就是s1,this.name也就成了s1.name,若你要用s2.equsl(s1),此时调用equal的是s2,this.name就成了s2。
一般,在类的方法里出现了与类的成员变量同名的变量,而两个变量又要同时使用(比如赋值给成员变量,一般自动生成的set方法、构造函数都是这样),或者在类的方法里出现了被实例化的该类,为了区分是谁的成员变量,这时就要用this来指定,这样代码读起来也比较明确。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马