【Java】——this关键字

版权声明:未经过博主同意,不得随意转发 https://blog.csdn.net/weixin_40918067/article/details/82177158

什么是this???——》一个关键字;

  • 那this作用于何处???——》用来区分成员变量和局部变量; ???——》成员变量与局部变量同名???——》让变量更具有语义化
  •                                           ——》在构造函数中调用构造函数

构造函数什么时候会被自动调用???——》创建新对象的时候;

为什么通过this就可以访问成员变量(也称为对象的属性)???——》this关键字可以指向对象???——》每个函数里面都有一个默认的this引用,当对象调用函数的时候,对象的地址就会赋给this关键字;

到了这里,相信大家已经对于this是什么和this有何作用及其它知识有所了解;

所以接下来,我们举例深入了解this:

class Person
{
    private String name;
    private int age;    
    Person(String name) 
    {
        this();
        this.name = name;
    }
public static void main(String[] args) 
    {
        Person p = new Person("旺财");
    }

所以说,其实this放就是对象的地址;接下来我们可以打印出this的结果:

class Word{
    public static void main(String[] args) {
        Demo d=new Demo();
    }
}
class Demo{
    Demo(){
        System.out.println(this);
    }
}

解析

  1. 怎么看出this的结果是一个哈希地址???——》@左边代表Demo类型,右边是地址;
  2. 没有写this的,为什么局部变量没有和成员变量发生冲突情况???——》栈中没有这个变量名,它就去堆中找这个变量???——》当去堆中找的时候,其实是帮我们默认加上this了;

this如何在构造函数中调用另一个构造函数???——》如下图所示:

解析上图内容:

  1. 如上图所示:在第二个构造函数中调用第一个构造函数;
  2. 如果当一个对象创建的时候调用第二个构造函数,那么此时this 就指向这个对象(可以说是这个对象的名称吧);
  3. 如果this(name),可以调用第一个构造函数,此时第一个构造函数里的this也有了这个对象的地址,可以初始化对象。
  4. 画出内存图解,加深理解;

运用this关键字时该注意以下几点:

  • 为什么调用构造函数的语句一定要写在第一行;???——》初始化语句放在后面是会编译报错的;???——》初始化最先;
  • 为什么不能在普通函数中调用构造函数的原因???——》要先初始化,才有之后的计算;
  • 函数是一个封装体,如果传的参数进去得到另一个值,那么功能就改变了,是一种极其不严谨的行为;
  • 为什么是一种极其不严谨的行为???——》
  • 构造函数只能在对象创建的时候调用仅调用一次???——》构造函数作用是初始化,初始化仅有一次???——》有了初始化,各个变量才有了初始值,之后的赋值才都不是初始化;

猜你喜欢

转载自blog.csdn.net/weixin_40918067/article/details/82177158