[java学习笔记]java语言核心----面向对象之this关键字

一.this关键字

体现:当成员变量和函数的局部变量重名时,可以使用this关键字来区别;在构造函数中调用其它构造函数

原理:

        代表的是当前对象。

        this就是所在函数的所属对象的引用。

        简单说,哪个对象调用了this关键字所在的函数,this就代表哪个对象。

1.区别局部变量和成员变量

内存图解:

[java学习笔记]java语言核心----面向对象之this关键字

说明:

  1. 程序执行到main函数时,main函数进入栈内存中的方法区,执行到Person p = new Person(“旺财”);时,在main方法区中创建一个Person类型的引用变量p
  2. 接着,在堆内存中创建一个Person类的实例,并初始化,然后调用构造函数,在栈内存中创建一个Person(String name)函数的方法区,对象一调用构造函数,构造函数的方法区中就会有一个this引用指向该对象
  3. 执行Person(String name)中的代码,把this所指向的对象进行初始化,执行完成后,Person方法区出栈
  4. 给栈中main方法区中的p赋值,使之指向this所指向的对象
  5. 执行speak方法,speak方法进入方法区,打印的是this所指向对象的name和age

2.在构造函数中的使用

详见 另一篇博客[java学习笔记]java语言核心----面向对象之构造函数 中的标题4:构造函数的相互调用

3.this的应用

只要在本类中使用本类的对象,一般都使用this关键字

如:在Person类中增加一个比较年龄的方法

代码:

class Person{
    private int age;
    private String name;
    //此处省略get和set方法
    Person(String name, int age){
        this.name = name;
        thia.age = age;
    }
    //判断一个Person对象的年龄是否和调用此方法的对象的年龄相同
    public boolean campare(Person p){
      
        return this.getAge()==p.getAge();
    }
}