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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈泰延 中级黑马   /  2013-1-20 18:50  /  2383 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

看完毕老师讲的this的应用,谁是谁的还是有点弄不清楚,,,,

  1. public boolean compare(person p)
  2. {
  3.         return this.age==p.age;//this 指向的是什么?

  4. }





  5. class  PesonDemo
  6. {
  7.         public static void main(String[] args)
  8.         {
  9.                 person p1 = new person(20);
  10.                 person p2 = new person(25);
  11.                 boolean b = p1.compare(p2);
  12.                 System.out.println(b);
  13.         }
  14. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1 神马都是浮云

查看全部评分

8 个回复

倒序浏览
this指向的是你那个类的实例对象,例如:
  1. public class Test1 {

  2.         public static void main(String[] args) {

  3.                 Person person1 = new Person(1);
  4.                
  5.                 Person person2 = new Person(1);
  6.                
  7.                 person1.compare(person2); //这里person1调用方法后,方法中的this代表的是 person1,也是Person的对象
  8.         }

  9. }


  10. class Person {
  11.        
  12.         private int age;
  13.        
  14.         Person(int age) {
  15.                 this.age = age;
  16.         }
  17.        
  18.         public boolean compare(Person p)

  19.         {
  20.                 return this.age==p.age;

  21.         }

  22. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 高浩 于 2013-1-20 19:10 编辑

this关键字,是获取当前类的地址,如果创建了对象,获取的就是那个对象的引用

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
讲通俗点就是:哪个对象调用这个方法,this就表示这个对象
回复 使用道具 举报

                person p1 = new person(20);
                person p2 = new person(25);
                boolean b = p1.compare(p2);

结合这段代码来说下.
p1 调用了compare方法 来和p2进行比较.
P1是主调.  this的意思是 谁调用了this所在的方法,this就代表谁..
所以 以上代码中this代表p1

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
柴乔军 发表于 2013-1-20 19:03
this指向的是你那个类的实例对象,例如:

谢谢你啊1
回复 使用道具 举报
高浩 发表于 2013-1-20 19:09
this关键字,是获取当前类的地址,如果创建了对象,获取的就是那个对象的引用 ...

非常感谢!
回复 使用道具 举报
自己多写几个systtem.out,println(this):就清楚了。
回复 使用道具 举报
/*
this:看上去,是用于区分局部变量和成员变量同名情况。
this为什么可以解决这个问题?
this到底代表的是什么呢?

this:就代表本类的对象,到底代表哪一个呢?
        this代表它所在函数所属对象的引用。
        简单说:哪个对象在调用this所在的函数,this就代表哪个对象。


this的应用:当定义类中功能时,该函数内部要用到调用该函数的对象时,这时用this来表示这个对象。
                但凡本类功能内部使用了了本类对象,都用this表示。

*/

class Person
{
        private String name;
        private int age;
        Person(int age)
        {
                this.age = age;
        }
        Person(String name)
        {
                this.name = name;
        }
        Person(String name,int age)
        {
                this.name = name;
                this.age = age;
        }

        public void speak()
        {
                System.out.println("name="+this.name+"...age="+this.age);
                this.show();
        }
        public void show()
        {
                System.out.println(this.name);
        }

        /*
        需求:给人定义一个用于比较年龄是否相同的功能。也就是是否是同龄人。
        */
        public boolean compare(Person p)
        {
                return this.age==p.age;

        }
}

class PersonDemo3
{
        public static void main(String[] args)
        {

                Person p1 = new Person(20);
                Person p2 = new Person(25);
                boolean b = p1.compare(p2);
                System.out.println(b);


                //Person p = new Person("lisi");
                //Person p1 = new Person("zhangsan");
                //p.speak();
                //p1.speak();
                //p.speak();
        }
}

/*
this语句 :用于构造函数之间进行互相调用。

this语句只能定义在构造函数的第一行。因为初始化要先执行。
*/

class Person
{
        private String name;
        private int age;
       
        {
               
                System.out.println("code run");
        }
       
        Person()
        {
                //this("hah");
                System.out.println("person run");
        }
        Person(String name)
        {
                //this();
                this.name =name;
        }
        Person(String name,int age)
        {
                //this(name);
                //this.name = name;
                this.age = age;
               
        }

}

class  PersonDemo4
{
        public static void main(String[] args)
        {
                new Person();
                //Person p = new Person("lisi",30);
                //Person p1 = new Person("lisi2",36);

        }
}

这个是毕老师所有案例的总结  你多写几遍就差不多了

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马