java编程原理

  1. 问题空间: 问题存在的地方,即业务内容。
  2. 解空间:解决方法,例如用计算机编程建模。
  3. 面向对象不会限于某种特定问题,咱们将问题空间中的元素及其解空间中表示为“对象”。
  4. 面向对象思想的实质是:程序能够经过添加新的对象使自身适应于某个特定问题。
  5. 当阅读解决方案的代码的同时也是在阅读问题的表述。
  6. OOP根据问题来描述问题,区别于面向过程。它的每个对象像一台小计算机,拥有状态与操做,至关于现实世界中对象的特征与行为。
  7. OOP的设计方式:
  • 万物皆对象:对象为一个奇特变量,能够存储数据,能够在自身上执行操做,理论上讲,能够抽取待解决问题的概念化构件将其表示为程序中的对象。
  • 程序是对象的集合,它们经过发送消息来告知彼此所要作的。消息能够理解为对特定对象方法的调用。
  • 每一个对象都由其余对象来构成。能够将复杂性隐藏在简单性背后。
  • 全部的对象都有其类型。以区别不一样的类。
  • 特定类型的全部对象都能接受相同的消息。继承特性,强大的封装能力。是一种可替代性。
  1. 每一个对象都提供“服务”,当理解一个程序时最好奖对象想象成“服务提供者”。自己提供服务,并调于其余对象来提供服务。编程就是创造一系列对象来解决要解决的问题。更像是一种对问题的现实仿真。
  2. 类建立者与类使用者。建立者暴雷必要的方法,隐藏细节实现。类使用者使用时就不会无心间弄出库的bug。封装出一个边界是很重要的。使得使用者没法修改建立者。
  3. 设计新类时应该首先考虑组合,而后才是继承与内聚(动态)形式。
  4. 继承与实现的类型等价性是一个重要理解。
  5. 多态的向上转型(安全)与向下转型(危险)。参数化类型即泛型就是为了解决向下转型的危险性。
  6. 容器类:list(存储序列),map(关系数组,创建对象之间的关联),set(每种对象只存储一个),队列,树,堆栈(自动变量、限域变量)。容器的不一样在于使用接口的不一样以及操做时效率不一样。容器接口与底层实现类的不一样。
  7. c++将对象放于堆栈或者静态区域,这样执行速度优先于一切,缺乏了灵活性。java将对象存储在堆 (heap)中,是一种动态内存分配的机制。在大量对象的状况下,查找与销毁的时间不会对建立对象产生重大冲击。
  8. java垃圾回收依赖于单根继承与只能在堆上建立对象的约束。
  9. 程序中各自独立运行的部分称为线程,概念上也称做‘并发’。、
  10. 在OOP中,编程只是建立表示问题空间概念的对象,以及组这结对象发送空间内行为的消息。
  11. 深入理解对象引用与对象自己(摇控器与电视机能够单独存在与关联)。
  12. java中数据存储的地方:寄存器(处理器内部,数量有限,无感知)、堆栈(RAM中,存在对象引用,速度快,指针下上移动可分配与释放内存,编译器知道对象生命周期)、堆(RAM通用内存池,new建立时间长,不知道对象存活时长,灵活建立)、常量存储(代码内部)、非RAM存储(流对象=>网络字节流,持久化对象=>文件磁盘)。
  13. 基本数据类型:非引用的数据类型,与C++同样在堆栈中固定长度存储,
  14. 引用具备做用域限制而对象没有限制,只不过引用超出做用域后再也没法访问这个对象了。垃圾回收会自动释放这些对象占用的内存空间。
相关文章
相关标签/搜索