20172325 2018-2019-1 《Java程序设计》第二周学习总结
20172325 2018-2019-1 《Java程序设计》第二周学习总结
教材学习内容总结
3.1集合
- 集合是一种聚集、组织了其他对象的对象。集合可以分为两大类:线性集合和非线性集合。
- 线性集合:一种其元素按照直线方式组织的集合。
- 非线性集合:一种其元素按某种非直线方式组织的集合。
- 集合中元素的彼此之间的组织形式通常由元素添加到集合的次序和元素自身的一些内在关系决定。
- 抽象数据类型(ADT):是一种在程序设计语言中尚未定义其值和操作的数据结构类型。ADT的抽象性体现在,ADT必须对实现细节进行定义,且这些对用户是不可见的。
- Java集合API(应用程序编程接口):一个类集,表示了一些特定类型的集合,这些类的实现方式各不相同。
3.2栈集合
- 栈(STACK)是一种线性集合,其元素的添加和删除都是在同一端进行的。其遵循后进先出(LIFO)原则,可颠倒顺序。
- 栈的基本操作
- 操作:描述
push:添加一个元素到栈的顶部
pop:从栈的顶部移出一个元素
peek:查看栈顶部的元素
isempty:确定栈是否为空
size:确定栈的元素数目
3.3主要的面向对象概念
- 利用多态引用和继承,可以创建可以储存任意类型的对象的集合。
- 多态引用是一个引用变量,他可以在不同地点引用不同类型的对象。术语“多态性”可定义为“具有多种形式”。通过多态引用调用的某个方法,在每次调用的时候都可以发生变化。
- 继承可用于创建一个类层次,一个引用变量可用于指向与之相关的任意对象。继承就是从已有类派生出一个新类的过程。新类自动地含有初始类的部分和全部变量和方法。
- 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。
3.4使用栈计算后缀表达式
- 由栈提供的操作与后缀表达式计算过程有着很好的一致性。使用栈来计算后缀表达式的算法描述如下:从左到右扫描表达式,依次识别出每个符号(操作符或操作数)。如果是操作数,就将其压入(push)栈中。若是操作符,则从栈中弹出(pop)两个操作数,并把先弹出数放在符号右侧,后弹出数放在符号左侧进行计算,然后把计算结果压入(push)到栈中,循环往复,当进行到表达式的末尾时,栈中所剩余的元素便是该表达式的结果。
- javadoc注释(为Java添加注释的官方标准):以/**开始、以 */结束。Javadoc可用于创建关于类集的在线的HTML文档,在线的JavaAPI文档就是例子。
3.6栈ADT
- Java接口定义了一个抽象方法集,有助于把抽象数据类型的概念与其实现分开。
public interface stackADT <T>
3.7用数组实现栈
- 数组中的单元数量称为容量,该值储存在数组的length常量中,数组一旦创建好,其容量是不能改变的。
3.8ArrayStack类
- 泛型(包括泛型数组)不能被实例化。所以我们必须创建一个存储Object引用的数组,然后把他转换成泛型数组。
- 在将Object数组转换成泛型数组时一定会出现未检验类型转换警告,所以加上@SuppressWarnings(“unchecked”)即可。
- push、pop、peek、isempty、size等方法的具体使用。
4.1链接作为引用
- 对象引用变量可以用来创建链式结构,链式结构是一种数据结构
- 对象引用变量存放的是对象的地址,表示对象在内存中的存储位置
- 在链表中存储的对象通常泛称为该链表的结点,注:需要一个单独的引用变量来表示链表的首结点,链表终止于其next引用为空的结点
4.2管理链表
- 对于管理链表时,进行删除和插入的方式的顺序是很重要的,如果不当,会将出现某段结点消失的情况
改变引用顺序是维护链表的关键
4.3无链接的元素
- 存储在集合中的对象不应该含有基本数据结构的任何实现细节
4.4JavaAPI中的栈
- java.util.Stack类是从Vector派生而来的,它带给了栈一些不恰当的操作。
4.5使用栈来穿越迷宫
- 这一节是迷宫的类型。说明的是:可以用栈来模拟递归处理,以跟踪恰当的数据
教材学习中的问题和解决过程
- 问题1:在做选择排序和冒泡排序的时候对于冒泡排序法完全没了印象
- 问题1解决方案:
冒泡排序:
原理:比较两个相邻的元素,将值大的元素交换至右端。
思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复第一趟步骤,直至全部排序完成。
第一趟比较完成后,最后一个数一定是数组中最大的一个数,所以第二趟比较的时候最后一个数不参与比较;
第二趟比较完成后,倒数第二个数也一定是数组中第二大的数,所以第三趟比较的时候最后两个数不参与比较;
依次类推,每一趟比较次数-1; - 冒泡排序的思维是最简单的,但是代码实现起来并不是很容易。当时用循环来比较的时候,就一直要把链表的节点向后推,但要用一个中间变量temp来保存前面的数字,然后做数字交换,最后把遍历的起始节点重指向头结点。
- 由于细节比较或是循环问题,速度上体现为:插入排序>选择排序>冒泡排序,三种排序的比较:其时间复杂度都是O(n^2)。
代码调试中的问题和解决过程
问题1:在蓝墨云的作业中,有个要求是实现删除和插入的操作,但是最开始我没有注意到,结果就是
问题1解决方案:听同学说我做的少了很多东西,又重新增加了一些代码,实现了插入和删除
结果是
代码托管
上周考试错题总结
- 理解情况:在做这道题的时候,我太过于钻牛角尖,我认为少了“或费极少的力”,于是错了,但是现在看来更加深了理解。
- 理解情况:软件工程,不是电气工程。
- 理解情况:书上的内容,没有认真看书。
- 理解情况:栈的操作是先进后出,颠倒了数据的顺序,故不能保存顺序。
- 理解情况:当时没有很理解书上关于增长函数的图表,后来理解之后发现O(2n)的函数增长最快。
- 理解情况:根据增长函数的图像可知。
结对及互评
- 博客中值得学习的或问题:
- 在教材和代码问题上很详细,同时很会找问题记录问题。
- 代码中值得学习的或问题:
- 代码操作并没有像我一样忘记很多
- 对代码的规范性也更加注意了
- 基于评分标准,我给本博客打分:9分。
- 20172306
其他(感悟、思考等,可选)
这周有了新的学习任务,开始慢慢找回原来的感觉,但是还是感觉忘了很多东西,着实花了不少功夫,还有因为学代会的召开,耽误的两节课程,我会抓紧时间找同学找老师问问题补回来。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 1/1 | 20/20 | |
第二周 | 941/8481 | 2/2 | 18/20 |
参考资料
20172325 2018-2019-1 《Java程序设计》第二周学习总结的更多相关文章
- 20145304 刘钦令 Java程序设计第二周学习总结
20145304 <Java程序设计>第2周学习总结 教材学习内容总结 java可区分基本类型和类类型(即参考类型)两大类型系统. 基本类型主要可区分为整数.字节.浮点数.字符与布尔. 整 ...
- 201521123063 JAVA程序设计 第二周学习总结
1.本周学习重点(2.27-3.5) java中的数组 以二维数组为例,数组名为scores,则 (1)先声明数组 int[][] scores;或int scores[][];或int[] scor ...
- 2017面向对象程序设计(Java)第二周学习总结
2017面向对象程序设计(Java)第二周学习总结 直系学妹学弟们好!额...不要问我为什么把学妹放前面,我也不知道!我只是你们和蔼可亲的学长一枚而已.也不要问为什么是第二周学习总结而不是第一周,因为 ...
- 201871010106-丁宣元 《面向对象程序设计(java)》第二周学习总结
丁宣元 <面向对象程序设计(java)>第二周学习总结 正文开头 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在 ...
- 201521044152<java程序设计>第一周学习总结
本周学习总结 java开发时间虽然很短,但是发展迅速,已成为现在非常流行的一门语言,很开心能有幸学习java.第一周学习了java的平台,运行环境jdk以及jrt等等新名词,还了解了eclipse的基 ...
- 20145304 刘钦令 Java程序设计第一周学习总结
20145304<Java程序设计>第1周学习总结 教材学习内容总结 1995年5月23日,是公认的Java的诞生日,Java正式由Oak改名为Java. Java的三大平台是:Java ...
- 201621123007 Java程序设计第一周 学习总结
第一周-Java基本概念 201621123007 <Java程序设计> 第一周学习总结 1. 本周学习总结 java是面向对象的一类语言,三大特征:封装性,继承性,多态性. jdk jr ...
- 201871010121 王方 《面向对象程序设计(java)》 第二周学习总结
这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p/11475 ...
- 杨其菊201771010134《面向对象程序设计Java》第二周学习总结
第三章 Java基本程序设计结构 第一部分:(理论知识部分) 本章主要学习:基本内容:数据类型:变量:运算符:类型转换,字符串,输入输出,控制流程,大数值以及数组. 1.基本概念: 1)标识符:由字母 ...
- 201777010217-金云馨《面向对象程序设计(Java)》第二周学习总结
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...
随机推荐
- Anaconda安装及配合pycharm使用
首先到https://www.anaconda.com/download/下载合适的anaconda版本.如Windows 64bit. 下载了直接双击开始下载,一路同意下去,到选择安装的目录.这里选 ...
- ajax-》post
1:最近写完前端,又写后端,jQuery的ajax已经用烂了,事实证明的确好用,再分享一下. data是后台echo的值,可以是数字,也可以是数组,用json_encode()包裹数组形式,前端接收要 ...
- KMP与AC自动机模板
HDU 1711 Number Sequence(KMP模板题) http://acm.hdu.edu.cn/showproblem.php?pid=1711 #include<bits/std ...
- tomcat指向外部项目
参考 https://www.cnblogs.com/ysocean/p/6893446.html conf/server.xml中增加 <Context path="/myweb&q ...
- Linux查看修改时间、时区
同步网络时间 yum install ntpntpdate time.nist.gov timedatectl set-timezone Asia/Shanghai如果上面time.nist.gov服 ...
- numpy 之矩阵的认知
di numpy 矩阵的创建与应用 可以用np.mat(a) 将a转变成矩阵 矩阵的加减法和 array相同 矩阵的乘法,如果矩阵要相乘的话就要A矩阵的行数,和B矩阵的列数相同才可以 这是查看数组不重 ...
- XFF的学习+修改源码--Are you in class
这几天有做天枢CTF的“Are you in class”的题目,虽然以前了解过XFF,但还是没有很好地应用,而且最后居然掉进了一个大坑,且听我细细讲来. 打开题目,首先有个提示“在不在学校主要看 ...
- TZOJ 4848 货车运输(最大生成树+倍增lca)
描述 A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 q 辆货车在运输货物,司机们想知道每辆车在不超过车辆限重的情况下,最多能运多 ...
- FortiGate恢复出厂
1.需求 当需要把设备的所有配置删除,可进行恢复出厂操作.恢复出厂后所有配置都将丢失,若一定要恢复出厂设置建议前先备份当前的配置:备份配置操作步骤请参见"系统管理">> ...
- 【转】python中的字符数字之间的转换函数
int(x [,base ]) 将x转换为一个整数 long(x [,base ]) 将x转换为一个长整数 float(x ) ...