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程序设计》第二周学习总结的更多相关文章

  1. 20145304 刘钦令 Java程序设计第二周学习总结

    20145304 <Java程序设计>第2周学习总结 教材学习内容总结 java可区分基本类型和类类型(即参考类型)两大类型系统. 基本类型主要可区分为整数.字节.浮点数.字符与布尔. 整 ...

  2. 201521123063 JAVA程序设计 第二周学习总结

    1.本周学习重点(2.27-3.5) java中的数组 以二维数组为例,数组名为scores,则 (1)先声明数组 int[][] scores;或int scores[][];或int[] scor ...

  3. 2017面向对象程序设计(Java)第二周学习总结

    2017面向对象程序设计(Java)第二周学习总结 直系学妹学弟们好!额...不要问我为什么把学妹放前面,我也不知道!我只是你们和蔼可亲的学长一枚而已.也不要问为什么是第二周学习总结而不是第一周,因为 ...

  4. 201871010106-丁宣元 《面向对象程序设计(java)》第二周学习总结

    丁宣元 <面向对象程序设计(java)>第二周学习总结 正文开头 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在 ...

  5. 201521044152<java程序设计>第一周学习总结

    本周学习总结 java开发时间虽然很短,但是发展迅速,已成为现在非常流行的一门语言,很开心能有幸学习java.第一周学习了java的平台,运行环境jdk以及jrt等等新名词,还了解了eclipse的基 ...

  6. 20145304 刘钦令 Java程序设计第一周学习总结

    20145304<Java程序设计>第1周学习总结 教材学习内容总结 1995年5月23日,是公认的Java的诞生日,Java正式由Oak改名为Java. Java的三大平台是:Java ...

  7. 201621123007 Java程序设计第一周 学习总结

    第一周-Java基本概念 201621123007 <Java程序设计> 第一周学习总结 1. 本周学习总结 java是面向对象的一类语言,三大特征:封装性,继承性,多态性. jdk jr ...

  8. 201871010121 王方 《面向对象程序设计(java)》 第二周学习总结

    这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p/11475 ...

  9. 杨其菊201771010134《面向对象程序设计Java》第二周学习总结

    第三章 Java基本程序设计结构 第一部分:(理论知识部分) 本章主要学习:基本内容:数据类型:变量:运算符:类型转换,字符串,输入输出,控制流程,大数值以及数组. 1.基本概念: 1)标识符:由字母 ...

  10. 201777010217-金云馨《面向对象程序设计(Java)》第二周学习总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...

随机推荐

  1. ADO.Net 数据库查询

    数据库中的表: VS查询代码: using System; using System.Collections.Generic; using System.Linq; using System.Text ...

  2. linux安装memcached和php的memcache扩展 (已使用)

    所需软件libevent-1.4.6-stable.tar.gz (http://monkey.org/~provos/libevent/)memcache-2.2.3.tgz (http://pec ...

  3. ABAP 自定义排序的思想(不用系统标准的SORT语句)

    不用ABAP的标准SORT语句,你能将下面这个数组按从小到大(或从大到小)的顺序重新排列,并计算其算法复杂度吗? 现在假设有一个数组:A = [10,66,52,102,-65,85,99,1,56, ...

  4. room 二分图最大匹配KM

    #include<bits/stdc++.h> #define fi first #define se second #define INF 0x3f3f3f3f #define fio ...

  5. java程序重要节点

    1.前台页面 2.前台页面到controller层跳转 和controller层的承上启下(jsp页面和java程序的桥梁) 3.serviceIpmle 程序处理的逻辑层 3.mybatis操作数据 ...

  6. python进程之守护进程

    标签(空格分隔): 守护进程 主进程创建子进程,然后将该进程设置成守护自己的进程,守护进程就好比崇祯皇帝身边的老太监,崇祯皇帝已死老太监就跟着殉葬了: 关于守护进程需要强调两点: 其一:守护进程会在主 ...

  7. JMeter学习(十三)目录介绍(转载)

    转载自 http://www.cnblogs.com/yangxia-test JMeter也学了一阵子了,对于基本的操作已了解,再回过头来看看Jmeter的目录,本篇是对于它的目录进行一些简单的介绍 ...

  8. oracle取某字符串字段的后4位

    参考 https://zhidao.baidu.com/question/2142799026528780468.html select substr('str1234', -4) from dual

  9. stock抓取基本资料

    use Goutte\Client; use GuzzleHttp\Client as GuzzleClient; include './vendor/autoload.php'; $client = ...

  10. matlab画图标题自定义字体大小

    title('标题','fontname','Times New Roman','Color','b','FontSize',20);字体是Times New Roman,颜色是蓝色('b'即blue ...