Java中this引用

为什么要有this引用

我们来看个例子

public class Date {
    public int year;
    public int month;
    public int day;

    public void setDay(int y,int m,int d) {
        year = y;
        month = m;
        day = d;
    }

    public void printDate() {
        System.out.println(year+"年 "+month+"月 "+day+"日");
    }

    public static void main(String[] args) {
        //实例化三个对象
        Date date1 = new Date();
        Date date2 = new Date();
        Date date3 = new Date();
        //设置三个对象的日期
        date1.setDay(2003,06,16);
        date2.setDay(2003,07,27);
        date3.setDay(2024,07,17);

        //打印日期中的内容
        date1.printDate();
        date2.printDate();
        date3.printDate();
    }
}

输出结果:

以上代码逻辑简单没有任何问题。但是如果你不小心把成员方法中的形参名和成员变量名写成一样的,会出现什么结果呢

public void setDay(int year,int month,int day) {
        year = year;
        month = month;
        day = day;
    }

输出结果:

到底是谁给谁赋值,我们的本意是当date1调用setDay时给date1赋值,date1调用printDay时打印date1的日期。要解决上述情况,我们就要用到this。

this引用怎么用

 public void setDay(int year,int month,int day) {
        this.year = year;
        this.month = month;
        this.day = day;
    }

输出结果:

this引用指向当前对象,当date1调用setDay方法时,date1就是this,当date2调用setDay方法时,date2就是this,当date3调用setDay方法时,date3就是this

this引用的特性

this只能在成员方法中使用,在成员方法中,this只能引用当前对象

this的使用方法不止一种,这里我们暂时介绍一种,其他使用你还要学习其他知识之后才会学到。

http://t.csdnimg.cn/Qrb0c  this引用的其他两种方法在这个链接里。

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值