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. 引用具有作用域限制而对象没有限制,只不过引用超出作用域后再也无法访问这个对象了。垃圾回收会自动释放这些对象占用的内存空间。

转载于:https://juejin.im/post/5cac436de51d456e80351664

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值