Writter类有两个成员变量,分别为age和name,在使用有参构造函数的时候,如果参数名和成员变量的名字相同,就需要使用this关键字消除歧义:this.age是指成员变量,age是指构造方法的参数。
当一个类的构造方法有多个,并且它们之间有交集的话,就可以使用this关键字来调用不同的构造方法,从而减少代码量。 比如说:在无参构造方法中调用有参构造方法:
public class Writer { private int age; private String name; public Writer(int age, String name) { this.age = age; this.name = name; } public Writer() { this(18, "沉默王二"); } }也可以在有参构造方法中调用无参构造方法:
public class Writer { private int age; private String name; public Writer(int age, String name) { this(); // 这里 this.age = age; this.name = name; } public Writer() { } }需要注意的是,this()必须是构造方法中的第一条语句,否则就会报错。
在下例中,有一个无参的构造方法,里面调用了print()方法,参数只有一个this关键字。 从结果中我们可以看出来,this就是我们在main()方法中new关键字创建的ThisTest对象。
public class ThisTest { public ThisTest() { print(this); // 这里 } private void print(ThisTest thisTest) { System.out.println("print " +thisTest); } public static void main(String[] args) { ThisTest test = new ThisTest(); System.out.println("main " + test); } } 来打印看一下结果: print com.cmower.baeldung.this1.ThisTest@573fd745 main com.cmower.baeldung.this1.ThisTest@573fd745类似于jQuery中的a.b().c().d() this写在方法里
说实话,自从Java 8的函数式编程出现后,就很少用到this在内部类中访问外部类对象了。来看一个示例:
在内部类InnerClass的构造方法中,通过 外部类.this 可以获取到外部类对象,然后就可以使用外部类的成员变量了。
-----------------------------------------
有的时候需要自己写一写才能记住,只是看看不动手很快就会忘记的。
也没什么人用this了吧