博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Chapter5_初始化与清理_this关键字
阅读量:5955 次
发布时间:2019-06-19

本文共 1810 字,大约阅读时间需要 6 分钟。

  this关键字是Java中一类很特殊的关键字,首先它只能在方法内使用,用来表示调用这个方法的对象,在这一点上this和其他对对象的引用的操作是相同的。我们之所以可以在方法内部访问到它是因为编译器在方法调用时,会将调用方法的对象作为第一个参数传到方法里面。下面列举几个例子来对this的用途做一些总结。

  (1)作为返回值,返回当前对象的引用,在一条语句里对同一个对象做多次操作。  

1 class leaf{ 2     int count; 3      4     public leaf(){ 5         count = 0; 6     } 7      8     public leaf increse(){ 9         count++;10         return this;11     }12 }13 14 public class test {15     public static void main(String[] args){16         leaf l = new leaf();17         l.increse().increse().increse();18         System.out.println(l.count);19     }20 }

  (2)将自身传递给外部的方法,用于代码复用

1 class sculpture{ 2     String done; 3      4     public sculpture getSculped(){ 5         return sculptor.make(this); 6     } 7      8     public void info(){ 9         System.out.println(done);10     }11 }12 13 class sculptor{14     public static sculpture make(sculpture s){15         s.done = "yes";16         return s;17     }18 }19 20 public class test {21     public static void main(String[] args){22         new sculpture().getSculped().info();23     }24 }

  这段代码实现的事情是,每一个sculpture(雕塑)都可以调用自己的getSculped方法,把自己传给sculptor(雕塑家)的一个静态方法,来完成雕塑。这样做的好处是每一个sculpture都可以调用外部方法,来完成雕塑的过程,实现对代码的复用。

  (3)在构造器中调用构造器

1 class footballteam{ 2     int count; 3      4     public footballteam(){ 5         this(23); 6     } 7      8     public footballteam(int count){ 9         this.count = count;10     }11     12     public void info(){13         //this(22);报错!14         System.out.println("we have " + count + " players");15     }16 }17 18 public class test {19     public static void main(String[] args){20         footballteam rma = new footballteam();21         rma.info();22     }23 }

  程序的第五行在默认构造器中调用了一次带参数的构造器,这样可以有不同的调用构造器的方法。另外13行的出错信息告诉我们,不能在除构造器之外的方法内调用构造器

转载于:https://www.cnblogs.com/buaa-zzy/p/7183791.html

你可能感兴趣的文章
zabbix系列zabbix3.4监控mysql5.7
查看>>
高级版本 【多后台】
查看>>
使用PostgreSQL进行中文全文检索
查看>>
Java集合的框架和实现类
查看>>
@RequestParam今天才知道是咋用的..
查看>>
全国第一家FPGA云主机(FAAS)正式启动售卖,被阿里云抢先了。
查看>>
Linux 局域网路由新手指南:第 2 部分
查看>>
TensorSpace:超酷炫3D神经网络可视化框架
查看>>
expdp导数脚本
查看>>
横向ListView (二)—— 添加快速滚动功能及item相关事件实现
查看>>
java 开发银行支付、对账时证书相关的操作总结
查看>>
为什么你的缓存更新策略是先更新数据库后删除缓存,讲讲其他的情况有什么问题?...
查看>>
计数服务设计
查看>>
如何在windows中使用cmd命令去编译,运行C++程序
查看>>
第三章 Python丰富的数据类型
查看>>
linux C/C++内存检测
查看>>
智能数据引擎Dataphin重磅发布,提供一站式的技术管理能力
查看>>
Apache 服务器端安装配置(Windows版本)
查看>>
Java基础——抽象
查看>>
org.hibernate.QueryException: could not resolve property
查看>>