在java中,this关键字用于区分同名的参数和成员变量。当setter方法参数名与成员变量相同时,必须用this.name赋值,否则name=name仅对参数赋值,成员变量未被修改,导致逻辑错误。

在 Java 中,this 关键字用于指代当前对象实例。在 setter 方法里用 this 给属性赋值,主要是为了解决形参名和成员变量名相同导致的命名冲突问题。
为什么需要 this?
当 setter 方法的参数名和类的成员变量名相同时,直接写 name = name 会让编译器无法区分哪个是参数、哪个是成员变量,结果就是给参数自己赋值,成员变量没被修改。这时就要用 this.name 明确表示“当前对象的 name 成员变量”。
Java开发手册规约集合,基于阿里巴巴Java开发手册(嵩山版)。 涵盖7大维度:编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规约。 当用户需要:(1) 编写或审查Java代码 (2) 检查命名/代码规范 (3) 处理异常和日志 (4) 编写单元测试 (5) 安全编码 (6) 数据库设...
标准写法示例
假设有一个 Person 类:
public class Person {
private String name;
private int age;
public void setName(String name) {
this.name = name; // this.name 是成员变量,name 是参数
}
public void setAge(int age) {
this.age = age; // 同理
}
}
常见使用场景和注意事项
- 只有当参数名和成员变量名相同时,才必须用 this;名字不同可省略(但加了更清晰)
- this 只能出现在非静态方法中,setter 方法通常是实例方法,所以可用
- 不要写成
this.setName(name)在 setter 内部调用自身——这会导致无限递归 - 现代 IDE(如 IntelliJ、Eclipse)通常自动生成带 this 的 setter,可直接使用
不加 this 会怎样?
如果写成:public void setName(String name) { name = name; }
这行代码只是把参数 name 赋给自己,成员变量 name 完全没变,属于典型的逻辑错误,且编译器不会报错。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










