第04章 Java语言进阶.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第04章 Java语言进阶

第4章 Java语言进阶 本章内容 变量的作用域与变量传递问题 对象的初始化顺序问题 垃圾回收与finalize()方法 内部类与匿名类 面向对象程序设计基本思想 泛型 枚举 *反射 变量的作用域范围 作用域范围:程序中能够使用该变量(成员变量与局部变量)的范围 分类: 类作用域范围和块作用域范围 类作用域范围 从类定义的第一个“{”开始,到 最后一个“}”结束 在类的范围内,类的成员方法能直接访问所有的成员变量 块作用域范围 从变量声明之处,到该块的最后一个“}” 例如: 局部变量、方法的参数 在子块的内部定义与外围块中同名的变量是允许的,这时内部的变量隐藏了外围的变量。 应尽量避免同名变量隐藏外围变量的情况发生。 变量的传递与返回 无论是基本类型变量还是引用变量,Java始终遵循“值传递”的规则。 当变量作为方法的返回值返回时,也进行了一次“值传递”。 例如:ValueTransfer.java 由于在方法中对传入参数进行的改变不会影响方法返回后的结果,在Java中无法对基本类型的参数产生“值交换”之类的效果,若想实现这种效果,需要使用引用类型的参数:Swap.java 成员的创建顺序 对于每个类,创建顺序为: 静态变量初始化 静态初始化块初始化(高级特性) 例:ExplicitStatic.java 调用基类的构造方法初始化基类对象(使用super关键字) 实例变量的初始化(定义初始化) 构造方法的其余部分 成员的创建顺序 如果涉及到的类有父类,则递归执行。先执行父类的,如果父类还有父类,则先执行父类的父类的,……,以此类推。 整个顺序为: 父类静态成员-父类静态初始化块-子类静态成员-子类静态初始化块-进入main方法。 在main方法中,如果产生了对象,该对象的产生顺序为:父类非静态成员初始化-父类构造方法-子类非静态成员初始化-子类构造方法。 成员的创建顺序 示例Beetle.java 结论:构造顺序为 父类静态-子类静态-父类定义初始化-父类构造方法-子类定义初始化-子类构造方法 这里“定义初始化”的意思是对实例变量进行初始化。 对ExplicitStatic.java的解释 Java虚拟机首先加载main方法所在的类,即ExplicitStatic ,该类的静态变量首先被初始化,但在初始化之前,要求加载Cups类。 加载Cups类的时候,首先初始化其静态变量c1,c2(同时也加载了Cup类),接着执行Cups类的静态初始化块,此时调用Cup的构造方法产生两个Cup对象。 然后,对ExplicitStatic类的静态变量进行初始化,这产生了两个静态Cups对象x, y。 最后,进入main方法,执行其中的语句。 对象如何销毁 在C++里,对象的生命周期管理全部是程序员的事情,在堆内存里产生的对象需要程序员自己负责销毁。 Java采用了垃圾回收机制进行对象内存的回收。虚拟机采用了一套算法,监视每个对象的使用,并在适当的时机进行垃圾回收(garbage collection)程序员只需构造对象、使用对象,不用销毁对象。 finalize()方法 void finalize()方法是Object类提供的一个方法,该方法在对象被垃圾收集前调用。 对象在运行时,不仅要使用内存,还可能会用到文件,套接字(Socket)或其它资源,当对象不再使用这些资源时,应对这些资源进行释放和回收。 注意:finalize()方法不能保证资源及时地回收,因为不知道系统何时进行垃圾回收。因而在资源紧缺时,最好人为地回收资源。 System.gc()方法 gc()是System类的静态成员方法,用来向虚拟机申请尽快进行垃圾回收。 示例:FinalizeDemo.java 内部类 内部类是在一个类的内部嵌套定义的类,它可以是其它类的成员,也可以在一个语句块的内部定义,还可以在表达式内部匿名定义(称为匿名内部类)。 内部类 内部类的作用主要有三点: 内部类的方法可以访问外部类的所有数据,包括私有数据 内部类可以对同一包中的其他类隐藏起来 在GUI程序设计中,经常需要写一些“回调方法”,这时使用匿名内部类比较便捷。 示例:InnerTest.java 匿名内部类 没有类名 常常用在图形用户界面 (GUI) 设计中,进行各种事件处理 例如: 鼠标事件、按钮事件和键盘事件等 在“图形用户界面”一章中,我们将看到大量的有关匿名内部类的例子 局部内部类 内部类还可以出现在方法内部,称为局部内部类。 局部内部类的生命周期及可见性只限于方法内部。 示例P102: GeneralClass.java 内部类的特性 内部类有如下特性: 一般用在定义它的类或语句块之内,在外部引用它时必须给出完整的名称,名字不能与包含它的类名相同 可以使用

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档