this:总是指向调用该方法的对象。
根据this
出现的位置不同:
-
引用成员变量
1 2 3 4 5 6
public class Student{ String name; //定义一个成员变量 name private void SetName(String name){ //定义一个参数(局部变量)name this.name=name; //局部变量的值的传递给成员变量 } }
虽然我们是可以看懂上面代码的含义,但是作为java编译器是怎么判断的呢?到底是形参的值传递给成员变量name,还是将成员变量name的值传递给形参的name?也就是说,两个变量名如果相同的话,就要使用
this
了。也就是说,在某个变量前面加上一个this
,就指的是这个对象的成员变量或者放方法,而不是指成员方法的形式参数或者局部变量。代码this.name = name
就是将形式参数的值传递给成员变量。this.name 就等于 Student.name -
调用类的构造方法
1 2 3 4 5 6 7 8
public class Student{ public Student(){//构造方法 this("Hello!"); } public Student(String name){//带形参的构造方法 } }
上面代码中的
this("Hello!")
就代表类中的构造方法。如果有多个构造方法的话,会根据参数的数量来判断.注意:利用this关键字来调用构造方法,只有在无参数构造方法中第一句使用this调用有参的构造方法。
-
返回对象的值
在代码中可以使用
return this
来返回某个类的引用,此时,这个this
就代表类名。 - 当该方法需要一个该类的对象做参数的时候,可以使用this代替。
- 如果想使用外部类的对象,可以使用
外部类名.this
的形式表示外部类的对象的引用。