Java基础:this关键字可在方法参数和成员变量同名时进行区分

this的用途之一:在方法参数和成员变量同名时用this进行区分,表示想用类的成员变量,而非方法参数。

创建一个打电话的类:

public class Callone {
    String name;  // name是我的名字,who是对方名字

    public void callSomeOne(String who) {
        System.out.println(name + "在给" + who + "打电话");
    }
}

实例化并使用,结果没有问题:

public class Democall {
    public static void main(String[] args) {
        Callone icall=new Callone();
        icall.name="我";
        icall.callSomeOne("你");
    }
}
// 结果:我在给你打电话

若类中传入参数也叫name:

public class Callone {
    String name;  // name是我的名字

    public void callSomeOne(String name) {   // name也是对方名字
        System.out.println(name + "在给" + name + "打电话");
    }
}

那么结果为:

public class Democall {
    public static void main(String[] args) {
        Callone icall=new Callone();
        icall.name="我";
        icall.callSomeOne("你");
    }
}

// 结果:你在给你打电话

这种情况的解释是,当方法的局部变量和类的成员变量重名时,就近原则优先使用局部变量,成员变量被屏蔽。此时若要使用成员变量,就需要用 “this.成员变量名” 的格式来引用成员变量如下:

public class Callone {
    String name;  // name是我的名字

    public void callSomeOne(String name) {   // name也是对方名字
        System.out.println(this.name + "在给" + name + "打电话");
    }
}

main程序里,通过谁调用了方法,谁就是this所指的。即,this总是指向调用该方法的对象

此时,是通过icall对象调用了callSomeOne方法,icall就是这里的this,输出变回正常:

public class Democall {
    public static void main(String[] args) {
        Callone icall=new Callone();
        icall.name="我";
        icall.callSomeOne("你");
    }
}

// 结果:我在给你打电话
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值