2018-03-10,第一篇读书笔记以及之后的大致规划。
目前手里有四本书《java编程思想》、《算法导论》、《C++Primer Plus》以及关于python数据分析的书。
在今年7月的时候,看完以上书籍,并且建立一套采集数据,分析数据,展示数据的系统。看书期间,完成系统整体到个个模块的设计。
今天以《java编程思想》学习为主,目标是书的前两章。
第一章对象导论,五个特性:1、万物皆为对象。2、程序是对象的集合。他们通过发送消息来告诉彼此所要做的。3、每个对象都由自己的、由其他对象所构成的存储。4、每个对象都拥有其类型。5、某一特定类型的对象都可以接收同样的信息。
另一总结:对象具有状态、、行为和标识。
谋而后动,做事之前先思考:可以将问题重表象抽取出来,生成对象,再作为类/类型,再用对象去解决问题。
控制访问:
-----------------------------------------------
类内部 package内 子类 其他
public 允许 允许 允许 允许
protected 允许 允许 允许 不允许
default 允许 允许 不允许 不允许
private 允许 不允许 不允许 不允许
-----------------------------------------------
组合:从已有的类组成新的类,解决新的问题。在这一过程中需要考虑代码复用的问题,也会重新思考已有的类在当初的环境下抽取,在今天的环境下还能不能继续适用从而重新设计甚至导致整个模块系统的重构。
前期绑定:即再调用之前,将函数绑定到固定地址,调用的时候跳转
后期绑定:即调用的时候,才确定要调转到那个地址。编译器保证调用方法的存在,以及对参数返回值做类型检查,但是并不明确执行代码。类似于一个未知数,确定他的存在,但是不能确定他的具体值。
第二章一切都是对象,对象存储位置:1、寄存器;最快的存储区域,是在处理器内部,数量有限根据需求分配,不能直接控制。2、堆栈,通用RAMz(随机访问存储器) ,通过堆栈指针从处理器获取直接支持,堆栈指针上移释放内存,下移分配新内存。java对象不存放其中3、堆,通用内存池(也位于RAM区),存放所有java对象,4、常量存储,放在程序代码内部,出于安全考虑,因为永远不改变。5、非RAM存储,流对象和持久化对象。
基本类型:存储在堆栈中,拥有固定大小。8个,byte,short,char,int,float,long,double,boolean。基本数据类型作为类成员的时候,即使没有进行初始化。java也会给定默认的初始值
boolean false
char '/uoooo'(null)
byte (byte)0
short (short)0
int 0
long 0L
float 0.0f
double 0.0d