java中的变量是有作用域的,那么局部变量和成员变量冲突时,怎么取成员变量?
由此问题,java引入this关键字,this有3种作用
1.表示成员变量(方法)
语法格式为
this.变量名; //(或方法名)
例如,把局部变量的 name 赋值给 成员变量的 name
public class Person {
private String name; //成员变量的 name
public void setName(String name) { //局部变量的 name
this.name = name;
}
}
当成员变量(或方法) 和 局部变量(或方法) 重名时,用 this.变量名 表示成员变量
2.调用其他构造方法
语法格式为
this(参数);
例如,在 person 类的空参构造中,调用其他构造
public class Person {
private String name;
public Person() {
this("zhangsan");
//在空参构造里,调用其他构造
}
public Person(String name) {
this.name = name;
}
}
this调用构造方法时,必须在构造方法的第一行,因为会先执行构造方法(初始化),且不能与 super() 同用
3.用作参数和返回值
用作参数时, 仅把this当作参数即可,例如 abc(this)
用作返回值时,语法格式为
return this;
this 的值,绑定的是当前调用它的对象,谁调用它,this 就绑定谁
public class Person {
public Person returnMyself() {
return this;
}
}