发布于2026-07-04 阅读(0)
扫一扫,手机访问
this 用于区分同名形参与实例变量,避免赋值歧义;只能在非静态上下文中使用,不可用于静态方法或访问静态属性。

Ja va 里的 this 关键字,说白了就是“当前对象”的代名词。它的出场率很高,而最核心的用法,就是帮我们**区分形参名和实例变量名**——尤其是当它们撞名字的时候。
想象一下,你在写一个构造器或 setter 方法,参数名和类的成员变量名刚好相同。这时候,直接写变量名,编译器会默认把它当作局部变量(也就是参数),而不是你想赋值的那个实例变量。怎么办?用 this.变量名 就能明确告诉编译器:我要操作的是当前对象的属性,不是参数。
最经典的例子就是构造器赋值:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name; // this.name 指实例属性,name 指参数
this.age = age; // this.age 指实例属性,age 指参数
}
}
this.,直接写 name = name,等号两边指的其实是同一个参数,结果就是参数给自己赋值,实例变量根本没被碰过。this.name 就相当于说“当前对象的 name 属性”,含义一清二楚,歧义解除。构造器之外,还有几个常见场景也离不开 this:
public void setName(String name) { this.name = name; },道理和构造器完全一样。this 会让人一眼看出“这是当前对象的成员”。比如 this.getName() 或 return this.name;。return this;,返回当前对象,方便连续调用多个方法。需要特别记住:this 只能在**非静态上下文**里用。也就是说,它只能在实例方法、构造器或实例初始化块中间出现。static 方法里没有“当前对象”的概念,所以不能写 this——编译阶段就会报错。
同样,静态属性属于类本身,应该通过 类名.静态属性 来访问,用 this.静态属性 也是不行的,编译器会直接拒绝。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8