《Java 中的 this 关键字》

        在 Java 编程的世界里,this 关键字就像一把钥匙,帮助我们打开了对象内部的大门,能够精准地操作对象的属性和方法。通过对 this 关键字的深入学习,我们能够更加高效地构建 Java 类和对象,编写出结构清晰、逻辑严谨的程序。希望大家在后续的编程实践中,能够熟练运用 this 关键字,让你的代码更加简洁和准确,在 Java 开发的道路上越走越顺。


一、this 关键字的基本概念

        Java 虚拟机会给每个对象分配 this,它代表当前对象。然而,要透彻理解 this 并非易事。我们可以打个比方,就像《上帝创世界小故事》一样,理解 this 也需要我们深入剖析。

二、通过代码示例分析 this 关键字

(一)第一个示例

  1. 代码展示
public class This01 {
    public static void main(String[] args) {
        Dog dog1 = new Dog("大壮", 3);
        System.out.println("dog1的hashcode=" + dog1.hashCode());
        dog1.info();
        System.out.println("============");
        Dog dog2 = new Dog("大黄", 2);
        System.out.println("dog2的hashcode=" + dog2.hashCode());
        dog2.info();
    }
}

class Dog{
    String name;
    int age;
    public Dog(String name, int age){
        //this.name和this.age分别代表当前对象的属性
        this.name = name;
        this.age = age;
        System.out.println("this.hashCode=" + this.hashCode());
    }
    public void info(){
        System.out.println("this.hashCode=" + this.hashCode());
        System.out.println(name + "\t" + age + "\t");
    }
}
  1. 分析
    • Dog类的构造器中,参数nameage是局部变量。如果没有this关键字,直接使用name = nameage = age,只是将局部变量赋值给自身,无法给对象的属性赋值。
    • 通过this.name = namethis.age = agethis.namethis.age指向的是当前对象的属性,这样就能正确地将传入构造器的参数值赋给对象的属性。

三、this 关键字的注意事项和使用细节

  1. 访问本类成员
    • this 关键字可以用来访问本类的属性、方法、构造器。
  2. 区分属性和局部变量
    • 当局部变量和类的属性同名时,this 用于区分当前类的属性和局部变量。例如在构造器中,当形参名和属性名相同时,使用 this 来指代属性。
  3. 访问成员方法
    • 语法为this.方法名(参数列表)
  4. 访问构造器
    • 语法为this(参数列表),但要注意只能在构造器中使用,并且必须放在第一条语句。
  5. 使用范围限制
    • this 不能在类定义的外部使用,只能在类定义的方法中使用。

四、this 关键字的课堂案例

(一)案例展示

  1. 测试类
public class TestPerson {
    public static void main(String[] args) {
        Person p1 = new Person("mary", 20);
        Person p2 = new Person("mary", 20);
        System.out.println("p1和p2比较的结果=" + p1.compareTo(p2));
    }
}
  1. Person 类
class Person {
    String name;
    int age;
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public boolean compareTo(Person p) {
        return this.name.equals(p.name) && this.age == p.age;
    }
}
  1. 分析
    • Person类的构造器中,this.name = namethis.age = age用于将传入的参数赋值给对象的属性。
    • compareTo方法中,this.namethis.age分别代表当前对象的nameage属性。通过比较当前对象和传入对象的nameage属性,判断两个人是否相等。如果名字和年龄完全一样,就返回true,否则返回false

         this 关键字在 Java 中是一个重要的概念,正确地理解和使用它对于编写面向对象的程序至关重要。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值