this的用法

class Banana { void f(int i) {} }
Banana a = new Banana(), b = new Banana();
a.f(1);
b.f(2);
若只有一个名叫f()的方法,它怎样才能知道自己是为a还是为b调用的呢?
为了能用简便的、面向对象的语法来书写代码——亦即“将消息发给对象”,编译器为我们完成了一些幕后工作。其中的秘密就是第一个自变量传递给方法f(),而且那个自变量是准备操作的那个对象的句柄。所以前述的两个方法调用就变成了下面这样的形式:
Banana.f(a,1);
Banana.f(b,2);

this关键字只能用于那些特殊的类——需明确使用当前对象的句柄。例如,假若您希望将句柄返回给当前对象,那么它经常在return语句中使用。
public class Leaf {
private int i = 0;
Leaf increment() {
i++;
return this;
}
}

最新文章

  1. DOM
  2. Struct2 csv文件上传读取中文内容乱码
  3. Ubantu Linux 环境下编译c++程序
  4. scikit-learn使用笔记与sign prediction简单小结
  5. logstash安装与基础用法
  6. 【VerySky原创】如何查找SNRO编号范围的使用情况;
  7. win7下安装配置tomcat,java运行环境
  8. js中this的指向
  9. Berserk Rook
  10. 基于NIO的Netty网络框架
  11. hdu4578 线段树 三次方,二次方,一次方的值
  12. HTML配色工具!在线配色工具
  13. javascript设计模式——职责链模式
  14. <script>标签中的 defer 与 async区别
  15. SQL Server 索引维护(1)——系统常见的索引问题
  16. git工具——对比文件的不同
  17. C#订阅与发布标准实现
  18. Luogu3514 POI2011 Lollipop 递推、构造
  19. iOS开发微信支付
  20. SpringMVC随笔之——@responsebody【引用snowolf博文】

热门文章

  1. JSON——JavaScript 中的使用
  2. 无线网络RSSI、SSID、BSSID
  3. Dapper用法小记
  4. MongoDB安装、CURD增改查删操作、应用场景
  5. JAVA方法传递参数:传值?传引用?
  6. Xilinx_7_Series_GTX简介
  7. java - day12 - ShapeTest
  8. 青蛙的约会 扩展欧几里得 方程ax+by=c的整数解 一个跑道长为周长为L米,两只青蛙初始位置为x,y;(x!=y,同时逆时针运动,每一次运动分别为m,n米;问第几次运动后相遇,即在同一位置。
  9. 谁是云的王者?OpenStack与VMware优劣对比
  10. 【Ubuntu安装,ATX基于uiautomator2】之安装步骤