一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

怎样用this区分成员变量与局部变量的名字冲突

时间:2026-06-22 09:38:52 编辑:袖梨 来源:一聚教程网

必须在局部变量与成员变量同名时使用this来访问成员变量,如构造方法中this.name = name;否则name = name;会赋值给参数自身,导致成员变量未被初始化。

在 java 中,当方法参数或局部变量与成员变量同名时,用 this 可以明确指代当前对象的成员变量,从而避免歧义。

什么时候必须用 this?

当局部变量(包括形参)和成员变量重名时,编译器默认优先使用局部变量。此时若想访问同名的成员变量,就必须加 this. 前缀。

  • 构造方法中初始化成员变量时常见(如 this.name = name;
  • 普通方法中修改或读取同名成员变量时也需要
  • 不加 this 就会赋值给局部变量自己,成员变量实际没被修改

典型例子:构造方法中的赋值

比如一个 Person 类:

class Person {
  private String name;
  private int age;

  public Person(String name, int age) {
    this.name = name; // this.name 指成员变量,name 指参数
    this.age = age;
  }
}

如果不写 this.name = name; 就变成了把参数赋给自己,成员变量仍是 null

其他能用 this 的场景(辅助理解)

  • 调用本类的另一个构造方法:this(…);(必须放在第一行)
  • 将当前对象作为参数传给其他方法:otherMethod(this);
  • 在内部类中区分外部类实例:OuterClass.this.field

小提醒:不是所有情况都要加 this

如果变量名不冲突,加不加 this 都可以,但有些团队规范会要求统一加上,提高可读性。不过它本质是“解决冲突的工具”,不是语法强制要求——只有存在歧义时,它才真正不可替代。

热门栏目