1.当局部变量与成员变量重名时,用于区分成员变量与局部变量,this.属性名表示成员变量(属性)。
class A{
String name;
public A() {
}
public A(String name) {
//成员变量和局部变量重名,可以用关键字this区分
this.name = name;
}
}
2.在本类构造函数中,调用其他的构造函数。说白了就是在无参构造中调用有参或者在有参中调用无参,且两者不能同时调用。
public class Demo {
public static void main(String[] args) {
A a = new A();
}
}
class A{
String name;
public A() {
System.out.println("A类的无参构造被调用");
}
public A(String name) {
this.name = name;
System.out.println("A类的有参构造被调用");
}
}
此时调用了A类的无参构造。
public class Demo {
public static void main(String[] args) {
A a = new A();
}
}
class A{
String name;
public A() {
//加了this();之后,会在A类的无参构造中去调用A类的有参构造
this("陌人不故");
System.out.println("A类de无参构造被调用");
}
public A(String name) {
this.name = name;
System.out.println("A类的有参构造被调用");
}
}
当在A类的无参构造中,使用this();;时,A类的有参构造也被调用了。
注意:
this(实参列表);必须在构造函数第一行,否则就会报错。
不能同时在无参里面调有参,有参里面调无参。
3.在本类中调用本类其他属性或方法,此时this可以忽略不写。
public class Demo {
public static void main(String[] args) {
A a = new A();
}
}
class A{
String name;
public A() {
System.out.println("A类的无参构造被调用");
}
public A(String name) {
this();
this.name = name;
System.out.println("A类的有参构造被调用");
}
public void test(){
System.out.println("this关键字");
//本来是应该System.out.println(this.name);这样,但此时this可以省略不写,
就成了System.out.println(name);
System.out.println(name);
}
}



