this可以简单的理解为当前的对象,在构造对象时可以理解为对象的第一人称“我”。this一般被分为三种用法:
1、this表示对象成员变量的引用而非函数参数变量,如下面的代码
public class Test{
private int i;
public void fun(int i){
this.i = i+1;
}
}
上面的this.i即表示当前当前成员变量的私有成员变量i,而并非void fun(int i)函数中的整型参数i。
2、this表示在类中含有多个构造函数时,其中一个构造函数调用另一个构造函数时调用,如下面的代码
public class Test{
private int i;
public void fun(int i){
this.i = i+1;
}
Test(String s){
System.out.println(s);
}
Test(int i,String s){
this(s);
this.i = i;
}
}
在第二个构造函数中直接用this(s)来调用第一个构造函数,方便,但在使用时一定要注意顺序,this(s),this调用的构造函数的语句一定要在函数的第一条语句,否则会报错提示,对this的调用必须构造函数的第一个语句。在同一个构造函数中只能有一个this(参数列表)这样的引用否则下面的一个肯定会报错。所以如果一定会用到两个this(参数列表),则将其中一个放在上面一个构造函数里面,即将两个this(参数列表)分开放在两个不同的构造函数,不能同时使用,但能嵌套使用。另外this(参数列表)这种使用方法只能是在构造函数里面才能这么使用,其他地方没有这种用法。
3、this表示一个对象的指针,如在函数中return this即表示传回当前的对象。在函数中,需要引用该函数所属类的当前对象时候,直接用this、
需要注意的是,Java中关键字this只能用于方法体内,当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是this。因此,this只能在类中的非静态方法中使用,静态方法和静态代码块中绝对不能出现this。
总上所述,this其实就是指向一个对象本身的指针