this关键字用于在实例方法和构造器中引用当前对象,解决同名变量歧义、调用其他实例方法或构造器、实现链式调用,但不可在静态上下文中使用。

在 Java 方法内部,this 关键字用于明确引用当前对象的成员变量或方法,尤其在局部变量与成员变量同名时避免歧义。
区分同名的局部变量和成员变量
当方法参数或局部变量与类的成员变量重名时,this 可以显式指定访问的是当前对象的成员:
- 常见场景:构造器或 setter 方法中用参数给成员变量赋值
-
写法示例:
this.name = name;表示把参数name的值赋给当前对象的成员变量name -
不写 this 的风险:若省略
this,赋值语句会变成name = name;,即给自身重新赋值,成员变量实际未被修改
调用当前对象的其他实例方法或构造器
this 还可用于在实例方法中调用本类的其他实例方法,或在构造器中调用同类的其他构造器(必须是第一行):
-
调用其他方法:
this.doSomething();明确表示调用当前对象的方法(虽通常可省略,但增强可读性) -
调用其他构造器:
this(arg1, arg2);实现构造器复用,避免重复代码 -
注意限制:构造器中调用
this(...)必须是首条语句,且不能与super(...)同时出现
this 的使用范围有严格限制
this 只能在实例方法、构造器中使用,不能出现在静态上下文中:
立即学习“Java免费学习笔记(深入)”;
-
静态方法中不能用 this:因为
this指向具体实例,而静态方法属于类,不依赖任何对象 - 静态代码块中也不能用 this:同理,没有当前实例的概念
-
编译错误提示:若在静态方法中误写
this.xxx,编译器会报 “non-static variable this cannot be referenced from a static context”
返回当前对象实现链式调用
在某些设计(如 Builder 模式或 fluent API)中,方法返回 this,支持连续调用:
-
典型写法:
return this;,让方法返回当前对象引用 -
效果示例:
obj.setName("A").setAge(25).save();每个方法都返回this,从而串联调用 -
关键点:返回类型需声明为当前类类型(或其父类/接口),不能是
void


















