简便理解this引用

首先要理解this我们需要先提出一个问题?

public class Data {
    public int year;
    public int month;
    public int day;
    public void setData(int year,int month,int day){
        year=year;
        month=month;
        day=day;
    }
    public void pData(){
        System.out.println("year: "+year+" month:"+month+" day:"+day);
    }

    public static void main(String[] args) {
        Data d1=new Data();
        d1.setData(2022,2,2);
        d1.pData();
    }
}

这个代码会如何输出呢?仔细一看这个setData函数的参数和定义的全局变量相同了,那么我们要知道以恶搞优先规则:局部变量优先!所以前面的year是局部变量,后面的是全局变量。所以我们并没有给全局year等赋值,所以它们还是它们的初始值0.所以打印出来的全都是0。

那么我们如何来避免这种情况呢?this引用!

什么是this引用

this引用指向当前对象(成员方法运行时调用该成员方法的对象),在成员方法中所有成员变量的操作,都是通过该引用去访问。只不过所有操作对用户都是透明的不需要用户自己操作,编译器自动完成。

简单来说,就是this操作是无处不在的。

所以我们可以将我们的代码进行一下修改:

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: ilook
 * Date: 2023-03-07
 * Time: 20:40
 */
public class Data {
    public int year;
    public int month;
    public int day;
    public void setData(int year,int month,int day){
        this.year=year;
        this.month=month;
        this.day=day;
    }
    public void pData(){
        System.out.println("year: "+this.year+" month:"+this.month+" day:"+this.day);
    }

    public static void main(String[] args) {
        Data d1=new Data();
        d1.setData(2022,2,2);
        d1.pData();
    }
}

注意:this引用的是调用成员方法的对象!

如何来理解呢?d1就是调用了成员方法,而d1的对象就是public int year等!

        Data d1=new Data();
        d1.setData(2022,2,2);
        d1.pData();

this引用的特性

  1. this的类型:哪个对象调用就是哪个对象的引用类型。

  1. this只能在成员方法中使用

  1. 在成员方法中,this只能引用当前对象,不能引用其他对象

4.this是“成员方法”中第一个隐藏参数,编译器会自动传递,在成员方法执行时,编译器会负责将调用成员方法对象的引用传递给成员方法,this负责来接受

代码演示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lose_rose777

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值