steam-《Thinking in Java》读书笔记(一)

来源:百度文库 编辑:神马文学网 时间:2024/04/27 03:54:36
第一章 对象导论
1.  面向对象的一些基本概念
接口:每个对象都有接口。
封装:隐藏实现细节。
聚合:重复运用实现代码。
【注】aggregation和composition的区别可以参看UML定义
集成:重复运用接口。
多态:后期绑定(late binding)是它的基础。
【注】late binding也叫dynamic binding动态绑定
2.  对象的生命周期
Java中对象都是分配在heap(堆)中。从heap中分配内存所消耗的时间远远大于从stack产生存储空间所需的时间。
【注:Stack和Heap的区别】
(1)每个应用程序运行时,都有属于自己的一段内存空间,用于存放临时变量、参数传递、函数调用时的PC值的保存。这叫stack。
(2)所有的应用可以从一个系统共用的空间中申请供自己使用的内存,这个共用的空间叫heap。
(3)stack中的对象或变量只要定义好就可使用了,应用程序结束时会自动释放。
(4)而要使用heap中申请的变量或对象只能定义变量指针,并要求在运行过程中通过new来动态分配内存空间,而且必须显示地free你申请过的内存,不过Java的垃圾回收机解决了这个问题,它会帮你释放这部分内存。
(5)stack中变量的大小和个数会影响exe的文件大小,但速度快。堆中的变量大小与exe大小关系不大,但分配和释放需要耗费的时间远大于stack中分配内存所需的时间。
3.  Java是单根继承体系,所有对象都继承自Object。
4.  容器和迭代器
容器(container或者collection)有很多种:队列、链表、哈希表、栈……
Iterator可将“容器实现细节”和“对容器进行访问的动作”分离开来。
5.  Java将支持(好像已经支持了)Parameterized Types(参数化型别,大陆的说法“泛型 Generics”)。唉,台湾的术语还不是很听得来,侯捷这本的翻译也一般般,很多句子念起来很拗口。
6.  垃圾回收机vs效率与弹性
垃圾回收机也不是那么完美,它的缺点在于你永远不知道垃圾回收动作何时开始,持续多久。这意味着Java程序的执行速率会有不一致的现象,因此无法应用于即时(real time, 也有称为实时)程序。
【注】real-time system指极重视程序执行速率的系统。
7.  异常处理
Java中异常(exception)是一种对象,可在错误发生点被throw出来,并在异常处理程序中被catch。
【注】throw对应于Delphi中raise。
8.  资源锁定
多线程使得某些情况下必须对某些资源进行锁定操作,就对象而言Java中可以用关键字synchronized来达到这一目的。而其他形式资源的锁定,通常可以产生一个对象代表要锁定的资源,所有线程在访问之前都必须加以检验。
9.  Java界中常用字谓“let”表示小东西
比如Servlet就是由server和let组成,表示小型服务端程序。Applet是由application和let组成,表示小型应用程序。
10. Java可以让你在更短的时间周期内(胜过任何一种语言)开发稳固的程序。
不过,开发速度是以执行速度为代价的。不过JDK1.3开始已经引入hotspot技术用于改善执行效率。