黑马程序员技术交流社区

标题: this 的应用 [打印本页]

作者: 陈泰延    时间: 2013-1-20 18:50
标题: this 的应用
看完毕老师讲的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. }
复制代码

作者: 柴乔军    时间: 2013-1-20 19:03
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. }
复制代码

作者: 高浩    时间: 2013-1-20 19:09
本帖最后由 高浩 于 2013-1-20 19:10 编辑

this关键字,是获取当前类的地址,如果创建了对象,获取的就是那个对象的引用
作者: 黄锦成    时间: 2013-1-20 19:30
讲通俗点就是:哪个对象调用这个方法,this就表示这个对象
作者: 折纸时代    时间: 2013-1-20 19:51

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

结合这段代码来说下.
p1 调用了compare方法 来和p2进行比较.
P1是主调.  this的意思是 谁调用了this所在的方法,this就代表谁..
所以 以上代码中this代表p1
作者: 陈泰延    时间: 2013-1-20 22:14
柴乔军 发表于 2013-1-20 19:03
this指向的是你那个类的实例对象,例如:

谢谢你啊1
作者: 陈泰延    时间: 2013-1-20 22:14
高浩 发表于 2013-1-20 19:09
this关键字,是获取当前类的地址,如果创建了对象,获取的就是那个对象的引用 ...

非常感谢!
作者: VOIDMAIN    时间: 2013-1-21 13:23
自己多写几个systtem.out,println(this):就清楚了。
作者: 黑马张旭    时间: 2013-1-22 16:38
/*
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);

        }
}

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




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