1、this修饰符用于区分成员变量和函数变量重名的情况。因为如果函数里的参数(局部变量)与类里的成员变量重名了,此时程序会先找局部变量。 - 例:
- class Person
- {
- private String name;
- Person(String name)
- {
- this.name = name;
- }
- public void speak()
- {
- System.out.println("name="+name);
- }
- }
- class PersonDemo
- {
- public static void main(String[] args)
- {
- Person p = new Person("lisi");
- p.speak();
- }
- }
复制代码如果在成员变量name前面不加this修饰符,此代码运行后的结果是name=null;而不是lisi,因为局部变量与成员变量重名了,程序运行后,是把局部变量的null值赋给了name。this代表它所在函数所属对象的引用,也就是说哪个对象在调用this所在的函数,this就代表哪个对象。
2、构造函数间互相调用,要用this();并且此语句只能放在构造函数的第一行。因为初始化动作要先执行,若初始化里还有初始化,就要先把最里面的初始化执行完,再执行外面的初始化。
- class Person
- {
- private String name;
- private int age;
- Person(String name)
- {
- this.name = name;
- System.out.print("name");
- }
- Person(String name,int age)
- {
- this(name);//构造函数之间互相调用用这种格式且必须放在构造函数里的第一行,一般函数调用用Person(name);
- this.age = age;
- }
- }
- class PersonDemo
- {
- public static void main(String[] args)
- {
- Person p = new Person("lisi");
- }
- }
复制代码总结:当定义类中功能(函数)时,该函数内部要用到调用该函数的对象时,这时用this来表示这个对象。只要本类功能内部使用到了本类对象,都用this表示。一般函数是不能直接调用构造函数的,因为this不能用于一般函数,只在构造函数间调用。
|