打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
this关键字

一、this关键字的意义

1、代表当前对象

2、this就是所在函数所属对象的引用,简单来说,哪个对象调用了this所在的函数,this就代表哪个对象

3、如下图,this代表的就是对象p,如右边内存图解,this会通过堆内存中新建对象的首地址,指向新建的对象

 

二、this关键字的应用(一个类中除静态外的成员,如果要运行,就必须得被对象调用

1、当成员变量和局部变量重名,可以用关键字this区分,如:

  1. class Person
  2. {
  3. private String name;
  4. private int age;
  5. Person(String name)
  6. {
  7. //成员变量和局部变量重名,可以用关键字this区分
  8. this.name = name;
  9. }
  10. public void speak()
  11. {
  12. //输出时,会默认为成员增加this关键字,用来代表具体对象的数据
  13. System.out.println(this.name+':'+this.age);
  14. }
  15. }

2、this关键字也可以用于在构造函数中调用其他构造函数。但是,只能定义在构造函数的第一行,因为初始化动作要先执行。如:

  1. class Person
  2. {
  3. private String name;
  4. private int age;
  5. Person()
  6. {
  7. name = 'baby';
  8. age = 1;
  9. System.out.println('Person run');
  10. }
  11. Person(String name)
  12. {
  13. //成员变量和局部变量重名,可以用关键字this区分
  14. this.name = name;
  15. }
  16. Person(String name,int age)
  17. {
  18. //调用其他构造函数时,只能定义在构造函数的第一行,因为初始化动作要先执行
  19. this();
  20. this.name = name;
  21. this.age = age;
  22. }
  23. public void speak()
  24. {
  25. System.out.println(this.name+':'+this.age);
  26. }
  27. }
  28. class ThisDemo
  29. {
  30. public static void main(String[] args)
  31. {
  32. Person p = new Person('小强',10);
  33. p.speak();
  34. }
  35. }

运行结果

我们可以看到,虽然我们在 Person(String name,int age) 构造函数中调用了 Person() 构造函数,但是最后的输出结果,仅输出了 Person run ,成员变量的内容还是我们在新建对象时,传递进去的参数,并不是 Person() 中初始化的内容。

可能有人会说,我们将调用的构造函数放在后面执行,不就行了,那么我们就来看看,如果将调用的构造函数放在后面,会出现什么结果:

我们可以看到,编译时就会提示错误,因为其他初始化要先执行,否则会破坏函数中的其他语句,如上面的例子,可能会覆盖我们需要传进去的参数,而且我们定义的函数是封装起来的。这也是Java中的语法规则。 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
18 this关键字
一篇文章带你搞懂JavaScript原型对象
笔记
C++ operator关键字(重载操作符)
Java中的两个特殊变量this和super — IT技术
JAVA之旅(四)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服