必须在参数名与成员变量同名时使用this.赋值,否则成员变量不会被修改;构造器、setter及判断逻辑中均需this区分作用域,而getter等无冲突场景可省略。

直接用 this.成员变量 = 参数 就能避开命名相似带来的赋值错误。这不是可选项,而是冲突场景下唯一可靠的写法——不加 this,代码能编译,但成员变量根本没被修改。
构造器里必须加this才能正确赋值
当构造器参数名和成员变量同名(比如都叫 name),Java 会优先把 name = name 解释为“参数给自己赋值”,成员变量仍是 null 或默认值。
-
this.name = name;明确告诉编译器:左边是当前对象的成员变量 - 哪怕参数名刻意改成
inputName,只要后续重构又改回name,漏掉this就立刻出问题 - IDE 可能标黄提示 “Assignment to itself”,但不能依赖它——静默逻辑错误比编译报错更难排查
setter 方法中同样适用
不只是构造器,任何实例方法里只要局部变量或参数跟成员变量重名,就得靠 this 区分。
public void setName(String name) { this.name = name; }- 判断逻辑里也要用:
if (!this.name.equals(name)) { this.name = name; } - 避免在方法里临时声明
String name = "temp";后,再误操作成员变量
用this()复用构造逻辑,顺便规避重复赋值
多个构造器之间通过 this(...) 调用,既能减少代码重复,也自然统一了赋值方式。
-
this()必须放在第一行,且不能和super()共存 - 例如:
public Person(String name) { this(name, 0); }→ 复用双参构造器里的this.name = name - 所有初始化最终都落到同一个带
this.的赋值语句上,不容易漏、不会乱
哪些地方其实不用this
没冲突时硬加 this 反而干扰阅读,该省就省。
- getter 方法里:
return name;比return this.name;更简洁 - 调用本类方法:
print();和this.print();效果一样,除非涉及重载或继承歧义 - 静态上下文中完全不能用
this,那里没有“当前对象”
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











