抽空在业余时间看看书,复习复习基础知识,提升下自己的素养吧。
这是一个面试官给的小Tips,读了两章,做一个小结。
《Java 编程思想》第一章大致讲了那大内容,一个是Java作为一种面向对象的语言,对面向对象变成做了一些描述;第二个是面向对象的对象创建与存在、几个特性(封装、继承、多态),对抽象类、接口的描述,违例(Exception)等
第二章大致内容是:数据存储结构,新数据结构——类,方法、变量、返回值和作用域等
1.一切皆是对象,面向对象的编程思想是:在遇到问题的时候,此时有一个问题空间,解决问题是在一个方案空间中(两个空间暂时没有关联),面向对象就是以对象的思路,将问题分解为若子问题空间,每个子问题空间有若干对象,对象有自己的属性、行为,通过这些行为产生了问题中显示的现象,在知晓了对象、对象的行为了以后,问题空间和方案空间就形成了关联。因此完成对问题的解释和解决。
2.面向对象的难点在于,如何合适的规定对象和对象的行为,不同的对象定义方式可能产生不同的效果,比如说扩展性、兼容性、使用方便性、解决问题的效果等。
3.如何合适的去定义问题空间中的对象,需要我们熟悉对象的三大属性。
即封装、继承、多态
封装简单的去理解一下:就是将某个、某类事物的属性、行为按照既定的方式表示出来,对内所有的属性、行为都是完全已知的,而对外只暴露与之有关的接口,使得一个对象既有自己的内在特质、又与其他对象可以畅通的进行数据交互、关联。
继承,在很多情况下,一类对象与另一类相同或者近似程度十分高,一些基本的属性、行为是完全一致的,如果这种情况将这些分别定义为不同的类时,就会产生编码冗余、对象间关系繁琐,于是产生了基类、衍生类的概念,(也常常称为父类、子类)。父类通常是共性的,它抽象了所有这种类型的对象的共有属性和行为。子类是个性,具有一些特殊的、自有的属性、行为。子类通过继承父类而拥有父类的属性和行为。
多态,多态是由于继承而产生的。多态是不同的类可以接收同一个消息,即同一个消息被多个不同的对象接收表现为不同的行为。多态的几个条件是:1、要有继承;2、要有重写方法;3父类引用指向子类对象。
4.抽象类和接口
抽象类是由abstract修饰的类,抽象类中不一定有抽象方法,但是抽象方法必须在抽象类中。
抽象方法是指由abstract修饰的,为实现的方法。
注意接口中的方法全都是抽象方法(默认有public static abstract修饰)。
5.数据存储结构
知晓机器的数据存储结构,更加有利于了解数据的使用方法。
1) 寄存器
寄存器是最快的存储器,位于CPU中,存储空间有限,Java程序无法直接控制或者访问。
2) 堆栈
预先需要直到存储的数据的长度、存在时间,速度仅次于寄存器的存储空间。即常说到的RAM,是一种随机访问存储器。由指针上下移动控制数据的存储和擦除。Java对象的引用可以存储在其中,但事实上Java并未如此做。
3) 堆
是Java的一种常见的对象存储空间。与堆栈不同的是,无需预先知晓数据的存储大小、存储时间。Java对象可以只是简单地通过new来创建对象,并自动的存储在堆内存中。注意堆也是在RAM中。缺点在于分配空间需要花费更多的时间。
4) 静态存储、常数存储、非RAM存储。用的比较少,其中静态存储static,Java并不使用。static和Java中的static关键字是不同的概念。虽然都表示静态。常数存储一般在ROM中,ROM是一个只读存储器。一般存储一些不许改变的数据。
6.其他常识
链表及其基本特征:
1) 什么是链表
链表是由一系列存储了指针、数据的数据单元组成的数据存储结构。
分类:单链表、双向链表、循环链表、双向循环链表。
循环链表中的最末一个指向head。
2) 链表的特征
链表插入、删除数据效率高;
链表查询、修改数据效率低下。
队列及其基本特征:
1) 什么是队列
队列就是一张线性表。
单向队列、双向队列
2) 特征
单向队列遵循先进先出的规则。