前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >大数据必学Java基础(三十五):深入了解关键词this

大数据必学Java基础(三十五):深入了解关键词this

原创
作者头像
Lansonli
发布2022-08-01 00:24:24
1790
发布2022-08-01 00:24:24
举报
文章被收录于专栏:Lansonli技术博客

深入了解关键词this

一、创建对象的过程

(1)在第一次遇到一个类的时候,对这个类要进行加载,只加载一次。

(2)创建对象,在堆中开辟空间

(3)对对象进行初始化操作,属性赋值都是默认的初始值。

(4)new关键字调用构造器,执行构造方法,在构造器中对属性重新进行赋值

从上面的效果能够看到:this指代的就是当前对象:

内存:

二、this关键字用法

1、this可以修饰属性

总结:当属性名字和形参发生重名的时候,或者 属性名字 和局部变量重名的时候,都会发生就近原则,所以如果我要是直接使用变量名字的话就指的是离的近的那个形参或者局部变量,这时候如果我想要表示属性的话,在前面要加上:this.修饰

如果不发生重名问题的话,实际上你要是访问属性也可以省略this

代码语言:javascript
复制
package com.lanson;

/**
 * @Auther: lanson
 */
public class Person {
    //属性
    int age;
    String name;
    double height;
    //空构造器
    public Person(){

    }
    //有参构造器
    public Person(int age,String name,double height){
        this.age = age;
        this.name = name;
        this.height = height;
    }
    //方法:
    public void eat(){
        int age = 10;
        System.out.println(age);//就近原则,age指的是离它近的age--》局部变量的age
        System.out.println(this.age);//这里指代的就是属性的age
        System.out.println("我喜欢吃饭");
    }
}

2、 this修饰方法

总结:在同一个类中,方法可以互相调用,this.可以省略不写

代码语言:javascript
复制
package com.lanson;

/**
 * @Auther: lanson
 */
public class Person {
    //属性
    int age;
    String name;
    double height;
    //空构造器
    public Person(){

    }
    //有参构造器
    public Person(int age,String name,double height){
        this.age = age;
        this.name = name;
        this.height = height;
    }
    //方法:
    /*public void eat(){
        int age = 10;
        System.out.println(age);//就近原则,age指的是离它近的age--》局部变量的age
        System.out.println(this.age);//这里指代的就是属性的age
        System.out.println("我喜欢吃饭");
    }*/

    public void play(){
        /*this.*/eat();
        System.out.println("上网");
        System.out.println("洗澡");
    }

    public void eat(){
        System.out.println(/*this.*/age);
        System.out.println("吃饭");
    }
}

3、this可以修饰构造器

总结:同一个类中的构造器可以相互用this调用,注意:this修饰构造器必须放在第一行

代码语言:javascript
复制
package com.lanson;

/**
 * @Auther: lanson
 */
public class Person {
    //属性
    int age;
    String name;
    double height;
    //空构造器
    public Person(){

    }
    //有参构造器
    public Person(int age,String name,double height){
        this(age,name);
        this.height = height;

    }
    public Person(int age,String name){
        this(age);
        this.name = name;
    }
    public Person(int age){
        this.age = age;
    }
    //方法:
    /*public void eat(){
        int age = 10;
        System.out.println(age);//就近原则,age指的是离它近的age--》局部变量的age
        System.out.println(this.age);//这里指代的就是属性的age
        System.out.println("我喜欢吃饭");
    }*/

    public void play(){
        /*this.*/eat();
        System.out.println("上网");
        System.out.println("洗澡");
    }

    public void eat(){
        System.out.println(/*this.*/age);
        System.out.println("吃饭");
    }
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ​深入了解关键词this
    • 一、创建对象的过程
      • 二、this关键字用法
        • 1、this可以修饰属性
        • 2、 this修饰方法
        • 3、this可以修饰构造器
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档