- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第三章 类与对象(续) 6、 方法重载 在Java(和C++)里,多个构造方法都有相同的名字,它们被称为“重载”。 方法重载即指多个方法可以享有相同的名字。但是这些方法的参数必须不同,或者是参数个数不同,或者是参数类型不同。(但不能以返回值区分重载的方法) 例如,要打印不同类型的数据,int, float, String,不需要定义不同名的方法: printInt(int); printFloat(float); printString(String)。 利用方法重载,只需要定义一个方法名:println(),接收不同的参数: println(int); println(float); println(String); 例:overloading.java 7、this关键字 this 关键字只能在方法内部使用,表示对“调用方法的当前对象”的引用。 例:MyThis2.java, 作为返回值使用:当需要返回对当前对象的引用时,就可以在return语句里使用this。 例:this.java,MyThis1.java This的另一种使用方法:——调用构造方法 可以使用this关键字在一个构造方法中调用另外的构造方法。 代码更简洁,维护起来也更容易 通常用参数个数比较少的构造方法调用参数个数最多的构造方法 使用this关键字例子,MyThis3.java, BankAccount.java 8、 对象的回收 与C++不同,Java额外提供了垃圾回收器,对于不再使用的内存资源,垃圾回收器能自动将其释放,无需再使用类似C++里的析构函数destructor。 Java运行时系统通过垃圾收集器周期性地释放无用对象所使用的内存 Java运行时系统会在对对象进行自动垃圾回收前,自动调用对象的finalize()方法 8.1 程序运行时的内部工作原理 程序的最小单元变量一旦被定义以后就在内存占用一定的空间。 C, C++都允许动态的(在运行时)分配存储空间。 堆(heap)是一种运行时的数据结构,是一个大的存储区域,用于支持动态的内存管理。Java里所有引用类型的对象都存储在堆里。 栈(stack)也是一种运行时的数据结构,为方法(函数)调用和返回处理提供存储空间。 具体参考think in java第二章2.2节 C Language Memory Allocation 8.2 内存的分配与释放 内存是一种紧缺的资源,不再需要时,应当尽快释放。 C语言中,通过调用malloc() 动态分配内存,用free()释放内存。C++ 语言中,则用new()与delete()。这些都属于由程序员显示地管理内存资源。 如果程序员忘记释放内存,则容易造成内存泄漏甚至导致内存耗尽. Java中的所有对象都是基于堆分配内存,任何对象都可以从堆中分配不同的存储区域,也可以把它们返回堆中,这些操作没有固定的顺序,因而导致了内存产生很多碎片的问题。 Java采用系统管理资源,由系统跟踪内存的使用情况,释放不再使用的内存,这个处理过程称为垃圾回收(garbage collection)。 垃圾收集器 自动扫描对象的动态内存区,对不再使用的对象做上标记以进行垃圾回收 finalize()方法 提供一个手动释放资源的机会,当资源可能被某些对象占用,Java的内存管理系统无法直接访问,也不能自动释放时,就采用此方法。 程序员大部分时间都不会用到此方法,而运行程序库大多用这种方式控制某些资源。 finalize()方法 在类java.lang.Object中声明,因此 Java中的每一个类都有该方法 用于释放系统资源,如关闭打开的文件或socket等 声明格式 protected void finalize() throws throwable 9、包(package) ——(参考教材4.6,thinking in java 第5章) Java开发中,有时类名会相同,同名的类就可能发生冲突。为了解决这一问题,Java提供包来管理类名,在C++里用命名空间来管理。但远不如Java灵活方便。 打“包” 开发人员往往需要一个好的文件组织形式,以便把文件放在一个目录结构里,创建自己的工具库,以供自己或开发团队其他成员使用。这就需要打“包”。 Java用“包”来表示相关类的集合,这些相关类可以属于多个文件,(当然有自己独立的.java和.class),把它们一起放到一个组群中,形成一个程序库。 Java程序包相当于其它语言中的库函数。 9.1 包(package): 程序库单元 包就是使用关键字import来导入整个程序库时那些变为可用的单元,如: import java.util.*
文档评论(0)