《Java 编程思想》学习小结 (一)
来源:互联网 发布:松本行弘 知乎 编辑:程序博客网 时间:2024/05/18 03:44
抽空在业余时间看看书,复习复习基础知识,提升下自己的素养吧。
这是一个面试官给的小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) 特征
单向队列遵循先进先出的规则。
- 《Java 编程思想》学习小结 (一)
- JAVA编程思想学习笔记(一)
- java编程思想学习笔记(一)
- Java编程思想学习笔记(一)
- 《java编程思想》学习笔记(一)
- java编程思想--学习笔记(一)
- JAVA编程思想学习记录(一)
- java编程思想学习笔记(一)
- java编程思想—并发编程小结一
- 《JAVA编程思想》(一)
- java编程思想(一)
- 【Java编程思想--学习笔记(一)】访问控制-包
- JAVA编程思想学习笔记(一)---一切都是对象
- java编程思想学习总结 一
- 《java编程思想》学习笔记一
- Java编程思想学习笔记一
- java编程思想学习易错点笔记一
- 《java编程思想》学习笔记一
- volatile 关键字不具备原子性
- VUE---组件
- 初识Cordova
- [POJ1635]Subway tree systems 判断有根树的同构 有根树哈希
- 开启HiDPI
- 《Java 编程思想》学习小结 (一)
- Servlet工作原理解析
- 摄像机模型,畸变模型及畸变图像的矫正
- Linux GCC常用命令
- 使用snmp4j实现Snmp功能(一)
- 安装Redis-3.0 on centos
- 关于freeMarker的一些基本介绍~
- C/C++语言基础学习书单
- 使用snmp4j实现Snmp功能(二)