this关键字的三种用法:
- 通过this关键字可以明确的访问一个类的成员变量,解决成员变量与局部变量名称冲突问题。
实例:
public class Student {
//定义四个成员变量
String name;
int age;
long phone;
String address;
//有参构造方法
public Student(String name, int age, long phone, String address) {
this.name = name;
this.age = age;
this.phone = phone;
this.address = address;
}
//成员变量的get/set方法
public String getName(){
//访问的是成员变量name
return this.name;
}
public void setName(String name) {
this.name = name;
}
}
上面代码中构造方法中定义的参数name,age等它是局部变量,在类中也定义了name,age等成员变量,在构造方法中使用age则是访问局部变量,如果想访问类中的成员变量,使用this.age则是访问成员变量。
- 通过this关键字调用成员方法
实例:
public class Student {
public void test1(){
System.out.println("test1方法执行了......");
}
public void test2(){
//调用test1()方法
this.test1();
}
}
在test2()方法中通过this.test1()访问test1()方法,注意此处的this关键字可以不写,效果是一样的。
public class Student {
public void test1(){
System.out.println("test1方法执行了......");
}
public void test2(){
//调用test1()方法
test1();
}
}
- 在构造方法中访问构造方法使用this([参数1,参数2,…])
实例:
public class Student {
//成员变量name
String name;
public Student() {
System.out.println("这是无参构造方法....");
}
public Student(String name) {
//调用无参构造方法
this();
this.name = name;
}
public void printName(){
System.out.println("姓名:" + name);
}
public static void main(String[] args) {
Student student = new Student("小明");
student.printName();
}
}
在有参构造方法中调用了无参构造方法,在使用this调用构造方法时有以下注意几点:
只能在构造方法中使用this()调用其他的构造方法,不能在成员方法中使用。
在构造方法中使用this()调用构造方法的语句必须位于第一行,而且只能出现一次。
不能在一个类中的两个构造方法中使用this()互相调用。
public class Student {
//成员变量
String name;
public Student() {
System.out.println("无参构造方法...");
//错误,必须位于第一行
this("张三");
}
public Student(String name) {
this.name = name;
}
}
public class Student {
String name;//成员变量
public Student() {
//错误,不能相互调用
this("张三");
}
public Student(String name) {
//错误,不能相互调用
this();
}
}