因为快要找工作了,所以开始看《Java编程思想》这本经典书籍。看的过程中记录了一些笔记,这几天突然想着可以分享到网上,以博客的形式进行记录,同时与广大程序猿一起讨论(哈哈,也不一定会有人看就是啦)。这样如果理解有误,也有人可以帮忙及时指出。下面是第一章的笔记。
- 解空间和问题空间的映射
- 解空间 --> 机器模型,对问题进行建模的地方,例如计算机
- 问题空间 --> 实际待解决问题的模型,问题存在的地方,如一项业务
- OOP允许根据问题来描述问题,而不是根据运行解决方法的计算机来描述问题
- 对象具有状态(内部数据)、行为(方法)和标识(每一个对象在内存中都有一个唯一的地址)
- 通常,只有类名和公共方法被示于UML设计图中
- 高内聚:每个对象都可以很好的完成一项任务,但是并不试图做更多的事
- 访问控制存在的两个原因:
- 让客户端程序猿无法触及他们不应该触及的部分
- 类库设计者可以改变内部的工作方式而不用担心影响到客户端程序猿
- protected和private作用相当,差别仅在于继承的类可以访问protected成员,而不能访问private成员
- 默认访问权限可以访问同一个package中的其他类的成员
- 在建立新类时,应该首先考虑组合;分辨必须使用继承的场合
- 通过继承而产生的类型等价性
- 继承里面的两种关系:
- is-a:子类只覆盖(override)父类的方法,并不添加新的方法
- is-like-a:子类添加了新的方法
- 程序绑定:
- 静态绑定(前期绑定):编译器将产生对一个具体函数名字的调用,而运行时将这个调用解析到将被执行的代码的绝对地址
- 动态绑定(后期绑定):调用对象方法时,被调用的代码直到运行时才能确定。编译器确保被调用方法的存在,同时对调用参数和返回值进行类型检查(无法提供此类保证的语言被称为是弱类型的),但是并不知道将被执行的确切代码
- 在Java中,动态绑定是默认行为,只有final, static, private和构造方法是前期绑定
- 向上转型(upcastting):将子类看成是父类类型;向下转型(downcasting)。向上转型是安全的,而向下转型是不安全的。编译的时候不会报错,但是运行时会抛异常。
- 单根继承结构:即所有的类都继承自单一的基类。Java是单根继承的。单根继承结构使垃圾回收器的实现变得容易很多。因为所有对象都保证有类型信息,因此不会因无法确定对象的类型而陷入僵局。
- 对容器选择:
- 不同容器提供了不同类型的接口和外部行为
- 不同的容器对于某些操作具有不同的效率
- 参数化类型:泛型
- ***对象的创建和生命周期,有两种形式:
- 对象的存储空间和生命周期可以在编写程序时确定,此时可以通过将对象置于堆栈(它们有时被称为自动变量(automatic variable)或限域变量(scoped variable))或静态存储区内来实现
- 在堆的内存池中动态地创建和释放对象。因为存储空间是在运行时被动态管理的,所以需要大量时间在堆中分配存储空间。
- Java的垃圾回收器知道对象什么时候不再被使用,并自动释放对象所占用的资源。这一点同所有对象都是继承自单根基类Object和只能以一种方式创建对象(在堆上创建)这两个特性结合,使得Java的编程过程较之C++要简单的多。
- 异常处理,其实就是以编程语言强制的形式,要求程序员对可能出现的错误进行处理;异常不能被忽略,所以它保证一定会在某处得到处理;异常提供了一种从错误状况进行可靠恢复的途径,有助于编写出更为健壮的程序
- 通常,线程只是一种为单一处理器分配执行时间的手段
- CGI(Common Gateway Interface),通用网关接口。CGI程序的响应时间依赖于所必须发送的数据量的大小,以及服务器和Internet的负载。CGI程序启动也相当慢
- Java通过applet和Java Web Start进行客户端编程
- Internet和Intranet,因特网和企业内部网
以上就是第一章笔记,后续会更新后面章节的笔记。