黑马程序员技术交流社区

标题: this关键字的使用 [打印本页]

作者: 画了一个圈儿    时间: 2014-8-24 14:26
标题: this关键字的使用
this关键字有两个作用:
1、 用于区分局部变量和成员变量同名情况
2、 用于构造函数间的调用
区分局部变量和成员变量同名:
       this代表所在函数所属对象的引用。
       简单说,哪个对象在调用this所在的函数,this就代表哪个对象
       classPerson
{
       String name;
       int age;
       Person(String name, inta)
       {
              this.name = name;         //将参数中的name赋给所属对象的name。此处的this代表调用Person(String name, int a)的对象
              age = a;
              System.out.println("name="+name+",,age="+age);
       }
       }
当定义类中功能时,该函数内部要用到调用该函数的对象时,用this来表示这个对象。
       但凡本类功能内部使用到了本类对象,都用this表示。
class Person
{
       String name;
       int age;
       Person(){}
       Person(int a)
       {
              age = a;
              System.out.println("name="+name+",,age="+age);
       }
       //需求:给人定义一个比较年龄是否相同的功能,即判断是否为同龄人
       public booleancompare(Person p)
       {
              returnthis.name==p.name;
       }
}
class  PersonDemo3
{
       public static voidmain(String[] args)
       {
              Person p1 = newPerson(20);
              Person p2 = newPerson(21);
              boolean b =p1.compare(p2);
              System.out.println("Sameage:"+b);          //Same age:false
       }
}
构造函数间的调用:
this语句只能定义在构造函数的第一行,因为初始化要先执行。
class Person
{
       String name;
       int age;
       Person(){}      
       Person(String name)
       {
              this();                    //调用构造函数Person();
              this.name = name;
       }
       Person(String name, intage)
       {
//this.name = name;        /*是给this.name进行赋值,它的功能已经定义在构造函数Person(Stringname)中,
                      因此,也可以通过调用Person(Stringname)来完成。*/
                     this(name);                      //用this完成构造函数间的调用
                     this.age = age;
                     System.out.println("name="+name+",,age="+age);
              }
}
class PersonDemo4
{
              public static void main(String[] args)
              {
                     Person p1 = newPerson("zhangsan", 20);
              }
}

作者: Java黑马    时间: 2014-8-24 17:00
赞一个:victory:
作者: 空洞的望着窗外    时间: 2014-8-24 18:15
很好,今天看到这,还没看完,先mark~
作者: lhtwm1    时间: 2014-8-25 10:25
这地方 看过了,还是不太清楚使用的地方,缺少代码经验
作者: 画了一个圈儿    时间: 2014-8-25 10:32
Java黑马 发表于 2014-8-24 17:00
赞一个

呵呵 谢谢
作者: 画了一个圈儿    时间: 2014-8-25 10:33
lhtwm1 发表于 2014-8-25 10:25
这地方 看过了,还是不太清楚使用的地方,缺少代码经验

跟着老毕敲代码:)
作者: 画了一个圈儿    时间: 2014-8-25 10:45
空洞的望着窗外 发表于 2014-8-24 18:15
很好,今天看到这,还没看完,先mark~

一起加油!
作者: 空洞的望着窗外    时间: 2014-8-25 12:48
画了一个圈儿 发表于 2014-8-25 10:45
一起加油!

我昨晚看完了,总结 就是哪个对象调用,指向对象
作者: 菜鸟一号    时间: 2014-8-25 13:45
很好的复习了
作者: gmz158    时间: 2014-8-25 14:11
赞一个               
作者: 七年锦·旅行    时间: 2014-8-25 15:02
恩!总结的不错!





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