this关键字可用于任何实例方法内指向当前对象,也可指向对其调用当前方法的对象,或者在需要当前类型对象引用时使用。
注意事项:
1.this是一个关键字,翻译为:这个;
2.this是一个引用和变量,this变量中保存了内存地址指向了自身,this存储在JVM堆内存中;
3.每一个对象都有this,创建多少个java对象,就有多少个不同的this;
4.this可以出现在“实例方法”当中,this指向当前正在执行这个动作的对象;
5.this在多数情况下都是可以省略不写的;
6.this不能使用在带有static的方法当中;
this.属性名
大部分时候,普通方法访问其他方法、成员变量时无须使用this前缀,但如果方法里有个局部变量和成员变量同名,但程序又需要在该方法里访问这个被覆盖的成员变量,则必须使用this前缀。
最常用的情形就是构造方法,举例如下:
有一个学生类Student定义如下:
public class Student{
private String name; //学生姓名
private double number //学生学号
private int age; //学生年龄
}
上述name、number、age都是private,因此在类外部无法对他们的值进行设置,只能通过构造方法的传递参数进行修改。
public Student(String name,double no,int age){
this.name=name; //设置学生名称
this.no=no; //设置学生学号
this.age=age; //设置学生年龄
}
在构造方法中使用this关键字分别对属性赋值,this表示当前对象,即调用该方法的对象(谁调用我,this就代表谁)。this.name=name语句表示一下赋值语句,等号左边的this.name是指当前对象具有的变量name,等号右边的name表示参数传递过来的数值。
下面创建一个main方法对上面的类进行测试:
public static void main(String[] args){
Student s=new Student("benon",B001,99);
System.out.println("学生名称:"+this.name+"学生工号:"+this.no+"学生年龄:"+this.age);
}
注:当一个类的属性名与访问该属性的方法参数名相同时,则需要使用this关键字来访问类中的属性,以区分类的属性和方法中的参数。
this.方法名
this关键字最大的作用就是让类中的一个方法,访问该类里的另一个方法或实例变量。