开启掘金成长之旅!这是我参加「掘金日新计划·12月更文挑战」的第五天,点击查看活动详情
Java this关键字详解
在Java中this关键字是一种常用的关键字,可用于任何实例方法内只想当前对象,也可指向对其调用当前方法的对象,或者在需要当前类型对象引用时使用。
this关键词有三种用法:
- this.属性名
- this.方法名
- this()访问构造方法
1.this.属性名
大部分时候,普通方法访问其他方法、成员变量时无须使用this前缀,但如果方法里面有个局部变量和成员变量同名,但程序又需要在该方法里访问这个被覆盖的成员变量,则必须使用this前缀。
例如:
现在有一个教师类Teacher的定义如下
public class Teacher{
private String name;//姓名
private int age;//年龄
private double salary;//工资
上述类中Teacher的三个属性name、age、salary的作用域都为私有,因此在类外无法直接调用访问它们。所以,在Teacher类内创建了一个构造方法Teacher,该构造方法可以对这三个属性进行赋值。
public Teacher(String name,int age,double salary){
this.name = name;//设置教师姓名
this.age = age;//设置教师年龄
this.salary = salary;//设置教师工资
在Teacher类的构造方法中使用了this关键字对属性name、age、salary进行赋值,this表示当前对象。this.name = name语句表示一个赋值语句,等号左边的this.name是指当前对象具有的变量name(成员变量),等号右边的name表示该构造方法中的参数(局部变量)
提示:当一个类属性(成员变量)名与访问该属性的方法参数名相同时,则需要使用this关键字来访问类中的属性,用来区分类的属性和方法中的参数。
2.this.方法名
这种是指在普通成员方法中使用this调用另一个成员方法。
class Student{
public String name;
public void doClass(){
System.out.println(name+"上课");
this.doHomework();
}
public void doHomework(){
System.out.println(name+"正在写作业");
}
}
public class Test{
public static void main(String[] args){
Student student = new Student();
student.name = "小明";
student.doClass();
}
}
上述代码的运行结果为:
小明上课
小明正在写作业
所以,关键词this是指向调用对象本身的引用名。可以用this关键字引用对象的实例成员。
3.this()访问构造方法
this() 用来访问本类的构造方法(构造方法是类的一种特殊方法,方法名称和类名相同,没有返回值。括号中可以有参数,如果有参数就是调用指定的有参构造方法。
下面定义一个 Student 类,使用 this( ) 调用构造方法给 name 赋值,Student 类的代码如下所示:
public class Student{
String name;
//无参构造方法
public Student(){
this("张三");
}
//有参构造方法
public Student(String name){
this.name = name;
}
//输出name
public void print(){
System.out.println("姓名" + name);
}
public static void main(String[] args){
Student student = new Student();
stu.print();
}
}
//输出结果:
//姓名:张三
注意:
this()不能在普通方法中使用,只能写在构造方法中。
在构造方法中使用时,必须是第一条语句。