在 java 中,this关键字
比较难理解,它的作用和其词义很接近。
①它在方法内部使用,即这个方法所属对象的引用;
②它在构造器内部使用,表示该构造器正在初始化的对象。
this 表示当前对象,可以调用类的属性、方法和构造器
什么时候使用this关键字
呢?
当在方法内需要用到调用该方法的对象时,就用this
。
先举例说明:
package day06;
public class Person7 {
public Person7(int age, String name) {
age = age; //像这种情况编译器分不清哪个age是形参,哪个age是类的成员变量
name = name; //同上
}
int age;
String name;
}
正确写法:
package day06;
public class Person7 {
public Person7(int age, String name) {
this.age = age; //通过this关键字表明this.age是Person7的成员变量,age是构造器的形参
this.name = name; //同上
}
int age;
String name;
}
package day06;
public class Person7 {
public Person7(int age, String name) {
this.age = age;
this.name = name;
}
int age;
String name;
public void setName(String name) {
this.name = name;
}
public void setName1(String name) {
this.setName(name); //name是setName1里传递过来的形参,然后传递给setName的形参
// this指类Person7(this.setName() = Person7.setName())
}
public void showInfo() {
System.out.println("姓名:" + this.name);
System.out.println("年龄:" + this.age);
}
}
package day06;
public class Person7 {
public Person7() {
}
public Person7(int age) {
this.age = age;
}
public Person7(String name) {
this(); // 等同于调用 无参构造器:public Person7()
this.name = name;
}
public Person7(int age, String name) {
this(1); // 等同于调用 有参构造器:public Person7(int age)
this.age = age;
this.name = name;
}
int age;
String name;
public void setName(String name) {
this.name = name;
}
public void setName1(String name) {
this.setName(name);
}
public void showInfo() {
System.out.println("姓名:" + this.name);
System.out.println("年龄:" + this.age);
}
}
总结:
1.当形参与成员变量重名时,如果在方法内部需要使用成员变量,必须添加this来表明该变量时类成员
2.在任意方法内,如果使用当前类的成员变量或成员方法可以在其前面添加this ,增强程序的阅读性
3.this 可以作为一个类中,构造器相互调用的特殊格式
注意:
(1) 使用 this() 必须放在构造器的首行!
(2) 使用 this 调用本类中其他的构造器,保证至少有一个构造器是不用 this 的。(实际上就是不能出现构造器自己调用自己)