在Java语言中,当创建一个对象后,Java虚拟机就会为其分配一个指向对象本身的指针,这个指针就是“this”。
在我们使用this时,this一般出现在类的方法里面,当这个方法还没有调用的时候this指的是谁并不知道,但是实际当中如果new一个对象出来之后,this指的就是当前这个对象,对哪个对象调用这个方法this指的就是谁(创建一个对象后,Java虚拟机就会为其分配一个指向对象本身的指针).如果再new一个对象,这个对象也有自己的this.this指的就是另外一个对象了。
实例1:通过this关键字可以明确的去访问一个类的成员变量,解决与局部变量名冲突的问题。
class Person {
int age;
public Person(int age) {
this.age = age; // this.age是成员变量,age是局部变量
}
public int getAge() {
return this.age;
}
}
class Person {
public speak() {
System.out.println("Hello");
}
public void introduce() {
this.speak(); //指成员方法speak(),这里直接写speak()也可以
}
}
class Person {
public Person() {
System.out.println("无参的构造方法被调用了...");
}
public Person(String name) {
this(); // 调用无参的构造方法
System.out.println("有参的构造方法被调用了...");
}
}
public class Example {
public static void main(String[] args) {
Person p = new Person("itcast"); // 实例化 Person 对象
}
}
注意:
1、只能在构造方法中使用this调用其它的的构造方法,不能再成员方法中使用。
2、在构造发法中,使用this调用构造方法的语句必须放在第一行,且只能出现一次,
3、不能在一个类的两个构造方法中使用this互相调用。下面出错;
class Person {
public Person() {
this("小田"); //两个构造方法中使用this互相调用,出错
System.out.println("无参的构造方法被调用了...");
}
public Person(String name) {
this(); // 调用无参的构造方法
System.out.println("有参的构造方法被调用了...");
}
}