- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
this是什么? 如果func2方法被调用,一定是事先已经有了一个存在的对象,func2被作为那个对象的方法被使用。 在func2内部能引用别的对象,同样也能引用func2所属的那个对象。 在func2中,自己所属的那个对象的引用名称是什么呢?this关键字在Java程序里的作用和它的词义很接近,它在函数内部就是这个函数所属的对象的引用变量。 参考:Testfunc.java this引用句柄的存放位置 每个成员方法内部,都有一个this引用变量,指向调用这个方法的对象,类中的成员方法与this之间的关系如图 this引用句柄的应用(1) 一个类中的成员方法可以直接调用同类中的其他成员,其实我们在一个方法内部使用“this.其他成员”的引用方式和直接使用“其他成员”的效果是一样的,那this还有多大的作用呢?在有些情况下,我们还是非得用this关键字不可的: (1)让类的成员变量名和对其进行赋值的成员方法的形参变量同名是必要的,这样的代码谁看了都能明白这两个变量是彼此相关的,老手看到函数的定义,就能揣摩出函数中的代码,大大节省了别人和自己日后阅读程序的时间。 public void setName(String name) { this.name = name; } this引用句柄的应用(2) (2)假设我们有一个容器类和一个部件类,在容器类的某个方法中要创建部件类的实例对象,而部件类的构造方法要接收一个代表其所在容器的参数。 public class Person { public void shout() { new Man(this); } } public class Man(Person person) { ………… } this引用句柄的应用(3) (3)构造方法是在产生对象时被Java系统自动调用的,我们不能在程序中象调用其他方法一样去调用构造方法。但我们可以在一个构造方法里调用其他重载的构造方法,不是用构造方法名,而是用this(参数列表)的形式,根据其中的参数列表,选择相应的构造方法。 public String(byte ascii[], int hibyte, int offset, int count) { ………… } public String(byte ascii[], int hibyte) { this(ascii, hibyte, 0, ascii.length); } 垃圾回收 Java中的finalize方法 如果对象实例不被任何变量引用时,Java会自动进行“垃圾回收”,收回该实例所占用的内存空间,在对象实例进行垃圾收集之前,Java自动调用对象的finalize方法,用来释放对象所占用的系统资源。但是只有在下一次垃圾收集过程中,才会真正回收对象的内存。 System.gc() 呼叫java虚拟机的垃圾回收器运行,回收内存的垃圾 不提倡使用finalize()和System.gc() 函数的参数传递 —基本数据类型的参数传递 参考PassValue.java的change方法 函数的参数传递 —引用数据类型的参数传递 参考PassRef.java的change方法 函数的参数传递 —引用参数传递的一个问题分析 参考PassRef.java的change1方法 static静态变量 当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用。我们有时候希望无论是否产生了对象或无论产生了多少对象的情况下,某些特定的数据在内存空间里只有一份,例如所有的中国人都有个国家名称,每一个中国人都共享这个国家名称,不必在每一个中国人的实例对象中都单独分配一个用于代表国家名称的变量。 static静态方法 在静态方法里只能直接调用同类中其它的静态成员(包括变量和方法),而不能直接访问类中的非静态成员。这是因为,对于非静态的方法和变量,需要先创建类的实例对象后才可使用,而静态方法在使用前不用创建任何对象。 静态方法不能以任何方式引用this和super关键字。与上面的道理一样,因为静态方法在使用前不用创建任何实例对象,当静态方法被调用时,this所引用的对象根本
文档评论(0)