Java基础_109.this 关键字

在学生类里面定义了两个成员变量, 一个age , 一个name , 并且用private 进行修饰.

然后针对age 和 name 这两个成员变量对应的给出了get 和set 方法.

最后使用了一个show 方法, show 方法用于在控制台输出成员变量的值.

String n  中的n 是用来赋值给String name 中的name, 也就是String n 中的n 应该代表的是姓名name 的意思, 但是实际上它代表不了姓名.

所以在这里这个名字起的不好, 所以把它注释掉.起名字应该要见名知义.所以重新起个名字.

名字起好之后, 要把第14行中的name 赋值给 第7行的name .

 这样就改好了.

 然后回到学生测试类里面, 右键运行.

控制台的值是null, 说明没有赋值成功.

 原因是第7行的name 是一个成员变量.

而第14行的name 是一个局部变量.

在方法中直接写name , 看到的只能是局部变量中的name , 也就是第15行的name 其实参照的都是第14行String name 中的name.所以想把局部变量赋值给成员变量没有成功.

 现在使用this 关键字来修改代码之后, 控制台成功输出了, 说明赋值成功了.

 原因是用this 来修饰name, 指代的就是成员变量name .

右边的name 没有用this 来修饰, 所以右边的name 是局部变量.

 age 同理, 也改一下.

学生测试类(用于访问学生测试类):

在学生测试类的main 方法中, 首先创建了一个对象, 然后使用使用set 方法给成员变量赋值,最后调用show 方法调用成员变量的值.

总结:

形参与成员变量不同名的情况:

 如果括号里是(String n), 内部代码是name = name.那么右边的name 就是成员变量, 不用写this 关键字.

getName 方法也是, 没有形参名字, 也就相当于方法的形参不与成员变量同名, 所以没有this 关键字来修饰, return name 中的name 也指的是成员变量.

使用this 的情况:当局部变量和成员变量同名的时候, 怕局部变量把成员变量的名字给隐藏了, 所以加上this 来修饰.

setName 方法被s1 调用, this 代表的就是s1. 

 setName 方法被s2 调用, this 代表的就是s2. 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值