文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

浅谈Java中的this作为返回值时返回的是什么

2023-05-30 21:57

关注

有时会遇到this作为返回值的情况,那么此时返回的到底是什么呢?

返回的是调用this所处方法的那个对象的引用,读起来有点绕口哈,有没有想起小学语文分析句子成份的试题,哈哈。

一点点分析的话,主干是“返回的是引用”;

什么引用呢?“那个对象的引用”;

哪个对象呢?“调用方法的那个对象”;

调用的哪个方法呢?“调用的是this所位于的方法”;这样就清楚了。

再总结一下就是,this作为返回值时,返回的是调用某方法的对象的引用,这个方法正是包含“return this;”这行命令的那个方法;更简单点说,就是谁调用返回的就是谁。

为了更清楚、直观的理解问题,下面以简单的例子说明。

包human中定义了Person类,代码如下:

package human;public class Person { String name; int age;  public Person() {   } public Person(String n, String g) {  name = n;  gender = g; }  //test:this作返回值 Person reThis1() {  Person per = new Person("lu","female");  System.out.println("reThis1 per:" + per.name);  return this; } Person reThis2() {  Person per = reThis1();  System.out.println("reThis2 per:" + per.name);  return this; } Person reThis3() {  name = "ma";  return this; } static void equRefer(Person per1, Person per2) {  if(per1 == per2)   System.out.println("per1指向的对象没有改变,仍与per2指向同一个对象");  else   System.out.println("per1指向的对象已改变,与per2指向不同的对象");  System.out.println("per1:" + per1.name);  System.out.println("per2:" + per2.name); }  public static void main(String[] args) {  Person per1 = new Person("liu","female");  Person per2 = per1;    per1 = per1.reThis1();  Person.equRefer(per1, per2);     per1 = per1.reThis2();  Person.equRefer(per1, per2);    System.out.println("调用reThis3之前,per1.name=" + per1.name);  per1 = per1.reThis3();  System.out.println("调用reThis3之后,per1.name=" + per1.name); }}

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 资料下载
  • 历年真题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯