• 深入理解this关键字


    this是什么?

    在Java语言中,当创建一个对象后,Java虚拟机就会为其分配一个指向对象本身的指针,这个指针就是“this”。

    this关键字有哪些用法?

    一、调用本类的成员变量

    class Person{
        private String name;
    
        public Person(String name){
            this.name = name;
        }
    }

    上述代码中,构造方法中的形参与Person类的成员变量名称相同,如果不使用this关键字,不说我们,编译器也无法辨识出是将形参name赋给成员变量还是将成员变量name赋给形参,

    所以this关键字可以指明参数是该类的成员变量,即this.name = name表示的是将形参name赋给成员变量name。

    二、调用构造方法

    class Person{
        private String name;
        private String sex;
    
        public Person(String name){
            this.name = name;
        }
    
        public Person(String name,String sex){
            this(name);
            this.name = name;
        }
    }

    当一个类中有多个含有不同参数的构造方法时,可以使用this调用其他的构造方法,而只要传入合适的参数即可。

    当然这种this调用方式也有一定的限制

    (1)使用this调用其他构造方法是必须放在该构造方法的第一行

    (2)当类中有多个构造器使用this互相调用时,必须有一个构造器是不使用this调用其他构造器的,否则将造成互相调用的死循环,类似于递归算法,当然这种写法编译器也不会通过。

    (3)在一个构造方法中只能调用一次

    三、调用自身对象

    public class Keyword_this {
    
        public static void main(String[] args){
            Person person1 = new Person("苹果大大个");
            person1.getInfo();
            System.out.println("我是谁=====>" + person1);
        }
    
    }
    
    class Person{
        private String name;
    
        public Person(String name){
            this.name = name;
        }
    
        public void getInfo(){
            System.out.println("我是谁=====>" + this);
        }
    }

    运行结果:

    我是谁=====>test.base.Person@4554617c
    我是谁=====>test.base.Person@4554617c

    根据结果显示,main方法中直接打印出来的对象与getInfo方法中打印的this对象是同一个,也就是说this对方法来说就是调用方法的那个对象。

  • 相关阅读:
    es6新增特性,数组的操作方法
    导航钩子有哪几种,如何将数据传入下一个点击的路由页面
    父组件如何获取子组件数据,子组件如何获取父组件数据,父子组件如何传值
    watch和computed的区别
    vue页面中定时器的使用
    table表格,顶端对齐
    计算机组成原理8-FPGA、ASIC、TPU、虚拟机
    vue中使用socket连接后台
    计算机组成原理7-CISC和RISC、GPU
    计算机组成原理6-流水线、多发射和超标量、SIMD、异常
  • 原文地址:https://www.cnblogs.com/xiguadadage/p/10123794.html
Copyright © 2020-2023  润新知