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