this 在英语中是表示指示概念的代词,即用来指示或标识人或事物的代词。同理,在JAVA中代表它所在函数所属对象的引用,即哪个对象在调用this所在的函数,this就代表哪个对象。
public class thisTest
{
public static void main(String[] args)
{
student student1 = new student();
student1.name = "小学生" ;
student1.pupil();
//student1对象调用pupil()方法,而pupil()方法中的 this 指代的就是 student1 对象
student student2 = new student();
student2.name = "大学生" ;
student2.pupil(); //第二次调用pupil()方法中,this 则指的是 student2 对象
}
}
class student
{
String name ;
public void pupil()
{
System.out.println(this.name);
}
}
this 中 主要有三个应用:
1.this 可以调用本类的属性,即类中的成员变量。
class student
{
String name ; // 成员变量name ,全局变量
public void setName(String name) //(参数name),局部变量
{
this.name = name ; // 将局部变量的值传递给成员变量
}
}
2. this 可以调用本类的方法,注意的是,static 修饰的方法不能够用 this 。
public class thisTest
{
public static void main(String[] args)
{
new thisTest().pupil(); //创建一个对象调用pupil方法
}
public void pupil()
{
this.collegeStudent(); //调用collegeStudent方法
}
public void collegeStudent()
{
System.out.println("collegeStudent方法被调用了!");
}
}
编辑
3.this 可以调用本类中的构造函数,注意:调用时要放在构造函数的首行。
public class thisTest
{
public static void main(String[] args)
{
thisTest thisTest = new thisTest(); //调用无参构造函数
}
public thisTest() //无参构造函数
{
this("小学生"); // 这句代码一定要放在本方法的第一行
}
public thisTest(String student)
{
System.out.println("我现在是一个" + student );
}
}
无参构造函数虽然没有输出,但是该函数中的 this 调用了 有参构造函数 ,而有参构造函数则输出我现在是一个(student变量),所以创建一个无参构造函数的对象也是有输出的。