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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 焦志鹏 中级黑马   /  2012-10-12 23:02  /  1780 人查看  /  2 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

简单说,分两种:
1、代表类所定义的对象:this.XXX
     当类中要用到某个对象的成员变量时,此时还没定义具体的对象,用this就正好解决了这个问题;
                        例如:
                        class  Person
                        {..                                                                                //为便于直观理解,可按下文描述来看:
                                Person(String name)                                           //Person(String name1)
                                {                                                                       //{
                                        this.name = name;                                    //this.name = name1;                         //也就是说当name1和name名字都是name时,this可以用于区分;
                                }                                                                     //}
                         ..
                        }

2、构造函数之间用于相互调用:this()
例如:
class Person
{
        private String name;
        private int age;
       
        {                                                                                                                                                //析构代码块
                System.out.println("code run");       
        }
        /*下面定义了三种不同传入参的构造函数,分别打印不同内容;
        name name1 name2都可以写成name,此处为了便于自己理解,写为不同;        */
         Person()
         {
                         System.out.println("a: person");
         }
        Person(String name1)
        {
                        this();                                                                                //功能二,调用了构造函数Person(),this语句放在了构造函数的第一行。;
                        this.name = name1;                                //功能一,代表类中的对象;
                        System.out.println("b: person");
        }
        Person(String name2,int age2)
        {
                        this(name2);                                                          //功能二,构造函数间的调用用this(),调用了构造函数Person(String name)
                        this.age = age2;
                        System.out.println("c: person");
                        System.out.println("name:"+this.name+" ,age:"+this.age);
        }
}

class PersonDemo4
{
                public static void main(String[] args)
                {
                        Person p = new Person("lisi",30);       
//                        System.out.println("p.name="+p.name+" ,p.age="+p.age); //不能直接打印private类型的参数
                }
}

以下是运行结果,可以看出构造函数间的调用流向,且给对象赋值成功:
code run
a: person
b: person
c: person
name:lisi ,age:30

评分

参与人数 1技术分 +1 收起 理由
谭立文 + 1 加油

查看全部评分

2 个回复

倒序浏览
我是这样理解的 在同一个类中 有相同的属性 为了区分这些相同的属性 用this区分开来
不知道有误没?
回复 使用道具 举报
代表本类中的对象,多背几遍,哈哈
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马