有时会遇到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
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数260
191.63 KB下载数245
143.91 KB下载数1139
183.71 KB下载数640
644.84 KB下载数2752
相关文章
发现更多好内容猜你喜欢
AI推送时光机浅谈Java中的this作为返回值时返回的是什么
后端开发2023-05-30
JavaScript的返回值是什么
后端开发2024-04-02
浅谈Java中GuavaCache返回Null的注意事项
后端开发2024-04-02
MFC中socket.receive的返回值是什么
后端开发2024-02-29
es6中includes返回的值是什么
后端开发2023-07-05
python中函数返回值的作用是什么
后端开发2023-06-14
Asp Conn.execute的返回值是什么
后端开发2023-08-14
BaseMapper insert的返回值是什么
后端开发2023-09-08
java mockito无返回值的方法是什么
后端开发2024-03-13
php中返回值的含义是什么
后端开发2023-06-29
Golang 函数值返回的是什么?
后端开发2024-04-14
mysql insert返回值指的是什么
后端开发2023-04-14
Ajax的返回值类型是什么
后端开发2023-06-08
golang函数的返回值是什么?
后端开发2024-04-22
javascript方法返回值指的是什么
后端开发2023-07-06
python中返回函数的作用是什么
后端开发2023-06-14
es6中includes返回的是什么
后端开发2023-05-14
Mybatis Select Count(*)的返回值类型是什么
后端开发2023-06-22
如何将 MySQL 表中的列值作为一组值返回?
后端开发2023-10-22
ExecuteBatch方法在java中返回值为-2的数组
后端开发2023-09-27
咦!没有更多了?去看看其它编程学习网 内容吧