20172313 2017-2018-2 《程序设计与数据结构》第十周学习总结

20172313 2017-2018-2 《程序设计与数据结构》第十周学习总结

教材学习内容总结

  1. 了解集合的同构和异构:同构集合保存类型全部相同的对象,异构集合可以保存各种类型的对象。
  2. 集合可以用各种方式实现,保存对象的基础数据结构可以用各种技术来实现。
  3. 学习动态结构,初步学习链表中的增删查改。
  4. 学习线性数据结构:队列(queue)先进先出,堆栈(stack)先进后出。
  5. 了解非线性数据结构:树(由一个根节点和构成层次结构的多个节点组成),图(连接一个图内各节点的边数一般没有限制)。
  6. 了解Java集合类API是由Java类库中定义的几种表示不同类型集合的类。
  7. 了解泛型:一个集合所管理的对象的类型要在实例化该集合对象时才确定,保证了集合中对象类型的兼容性。

教材学习中的问题和解决过程

  • 问题1:集合是一种对象,对象适用于定义集合,书上说集合和抽象数据类型是可以互换的等同概念,那么为什么对象特别适用于实现抽象数据类型。
  • 问题1解决方案:抽象数据类型(ADT)是一个包含数据和施加在这些数据上的操作的集合。对象实际上就是将变量和相关的方法封装在一起的实体。对象隐藏了ADT背后的实现细节,并且将借口和底层的实现相分离,使得实现发生变化后并不影响接口。
  • 问题2:ArrayList是一种异构集合,那么ArrayList类提供抽象数据类型吗?
  • 问题2解决方案:ArrayList类提供抽象数据类型。ArrayList类提供一个信息集合,并提供保存和访问信息的操作,而实现的细节对我们来说是隐藏的。也就是说,当时用一个ArrayList对象时,不需要知道他存放的数据是什么或着操作是如何实现的。
  • 问题3:不理解链表中指针的是如何定义的,指针的使用也不是很清楚。
  • 问题3解决方案:

    Java语言中的对象引用实际上是一个指针(这里的指针均为概念上的意义,而非语言提供的数据类型),所以我们可以编写这样的类来实现链表中的结点。
    程序代码:
    class Node
    {
     Object data;
     Node next;//指向下一个结点
    }
    将数据域定义成Object类是因为Object类是广义超类,任何类对象都可以给其赋值,增加了代码的通用性。为了使链表可以被访问还需要定义一个表头,表头必须包含指向第一个结点的指针和指向当前结点的指针。为了便于在链表尾部增加结点,还可以增加一指向链表尾部的指针,另外还可以用一个域来表示链表的大小,当调用者想得到链表的大小时,不必遍历整个链表。
    链表的数据结构我们可以用类List来实现链表结构,用变量Head、Tail、Length、Pointer来实现表头。存储当前结点的指针时有一定的技巧,Pointer并非存储指向当前结点的指针,而是存储指向它的前趋结点的指针,当其值为null时表示当前结点是第一个结点,因为当删除当前结点后仍需保证剩下的结点构成链表,如果Pointer指向当前结点,则会给操作带来很大困难。如何得到当前结点呢?我们定义了一个方法cursor(),返回值是指向当前结点的指针。类List还定义了一些方法来实现对链表的基本操作,通过运用这些基本操作我们可以对链表进行各种操作。例如reset()方法使第一个结点成为当前结点。insert(Objectd)方法在当前结点前插入一个结点,并使其成为当前结点。remove()方法删除当前结点同时返回其内容,并使其后继结点成为当前结点,如果删除的是最后一个结点,则第一个结点变为当前结点。

代码调试中的问题和解决过程

  • 问题1:一开始做对链表的增删查改的时候,由于对概念的理解不清,直接令两个对象进行比较,导致比较的结果与实际不符,也就进而导致了删除链表节点不成功。
  • 问题1解决方案:在Java中,除了值类型,另外还有一种引用类型,而不同的对象,其引用值其实并不相等,即在内存中的不同的地址单元中。比如我们定义了学生类,分别有两个学生对象实例 :

    Student stu= new Student(); Student stu1= new Student();

  • 此时我们无论是使用stu==stu1符号,或者stu.equals(stu1)方法,把两个对象进行比较,得到的结果都是不相等的,因为对于引用类型来说,默认是比较两个对象引用的地址,显示,每个对象的引用有自己唯一的地址,所以,是不相等。把对象中所储存的内存地址中的值转化为字符串类型的在进行比较就可以了。

代码托管

上周考试错题总结

  • 错题1: An exception that could also arise in the try statement that does not have an associated catch statement is
    A . ClassNotFoundException
    B . IllegalArgumentException
    C . NegativeArraySizeException
    D . NullPointException
    E . OutOfMemoryException
  • 解析 如果数组尚未实例化,那么i3将抛出NullPointerException。 ClassNotFoundException,IllegalArgumentException和OutOfMemoryException不会被抛出,因为try语句中没有代码引用某个未知类,使用参数或处理新内存的生成。 NegativeArraySizeException仅在实例化数组时出现。
  • 错因分析:在做测试的时候还未彻底的学习课本,导致概念理解不清。
  • 错题2: Which of the following is not true of the RuntimeExceptions class?
    A . All RuntimeExceptions throw checked exceptions
    B . All RuntimeExceptions are Throwable objects
    C . RuntimeException has child classes ArithmeticException and NullPointerException
    D . RuntimeException objects are not Error objects
    E . All of the above are true
  • 解析 B,C和D中的答案都是正确的,RuntimeExceptions是Throwable对象,不是Error类的一部分,两种类型的RuntimeException是ArithmeticException和NullPointerException。不是RuntimeException的异常包括各种检查的异常,但RuntimeException不是检查异常。
  • 错因分析:自己粗心大意,对题一理解不清导致错误。
  • 错题3: If an exception is thrown and is not caught anywhere in the program, then the program terminates.
    A . true
    B . false
  • 解析 异常是interest的事件,或者是没有异常处理程序就无法正常处理的运行时情况。异常被关联的异常处理程序捕获。如果抛出异常但未处理,则程序必须终止。
  • 错因分析:对异常的概念理解混淆。
  • 错题4: A try statement must have at least one catch statement, but could have many catch statements, and may or may not have a finally clause.
    A . true
    B . false
  • 解析 所有的try语句都必须至少有一个catch语句,或者没有理由拥有try语句。对于可能引发的每种类型的异常,可以有一个catch语句。程序员可以指定尽可能多的catch语句。此外,try语句可能有一个finally子句,但不需要一个。
  • 错因分析:对异常的捕获概念理解不清。
  • 错题5: If an exception arises in a catch statement, and the exception is of the type caught by the catch statement, then the catch statement catches the same exception. For instance, if the following catch statement first catches an ArithmeticException and, while executing, throws another ArithmeticException, it is able to catch the second ArithmeticException as well the first.
    catch (ArithmeticException ex) {...}
    A . true
    B . false
  • 解析 异常会导致当前语句停止执行并控制外部传送到第一个catch(在当前语句之后)可以捕获异常的传输。 因此,catch语句不会捕获从它自身内部抛出的异常,尽管catch语句可以在其中嵌套额外的try和catch语句。
  • 错因分析:在学习异常的传递的时候,没弄清异常传递的真正定义是什么,再犯了这个错误后,一定要好好记住!

结对及互评

  • 博客中值得学习的或问题:

    • 排版精美,对于问题研究得很细致,解答也很周全。
  • 代码中值得学习的或问题:
    • 代码写的很规范,思路很清晰,继续加油!

点评过的同学博客和代码

  • 本周结对学习情况

    • 20172332
    • 20172326
    • 结对学习内容
      • 第13章 集合

其他(感悟、思考等,可选)

有一个问题一直困扰着我,那就是自己到底为什么而读书,为什么而学习,这些天正好看到一段话,现放到这里予自己以共勉。

作者:孙在在
链接:https://www.zhihu.com/question/40683692/answer/90861351
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

我感到害怕。就像我们不知道冬天从哪天开始,只会感觉夜的黑越来越漫长。我害怕一跟他们谈话,我就像一个透明的人,苍白的脑袋无法隐藏。我所拥有的内涵是什么?不就是人人能脱口而出,游荡在空气中最通俗的认知吗?像心脏在身体的左边。春天之后是夏天。美国总统是世界上最有权力的人。但阅读的人在知识里遨游,能从食谱论及管理学,八卦周刊讲到社会趋势,甚至空中跃下的猫,都能让他们对建筑防震理论侃侃而谈。相较之下,我只是一台在MP3世代的录音机,过气、无法调整。我最引以为傲的论述,恐怕只是他多年前书架上某本书里的某段文字,而且,还是不被荧光笔画线注记的那一段。我害怕,当他们读书时,脸就藏匿在书后面。书一放下,就以贵族王者的形象在我面前闪耀。举手投足都是自在风采。让我明了,那不只是知识,更是魔力。他们是懂美学的牛顿。懂人类学的梵谷。懂孙子兵法的甘地。血液里充满答案,越来越少的问题能让他们恐惧。彷佛站在巨人的肩牓上,习惯俯视一切。那自信从容,是这世上最好看的一张脸。我害怕,我祈祷他们永远不知道我的不安,免得他们会更轻易击垮我,甚至连打败我的意愿都没有。我如此害怕,因为他们的榜样是伟人,就算做不到,退一步也还是一个,我远不及的成功者。我害怕,他们知道「无知」在小孩身上才可爱,而我已经是一个成年的人。我害怕,因为大家都喜欢有智慧人。我害怕,他们能避免我要经历的失败。我害怕,他们懂得生命太短,人总是聪明得太迟。我害怕,他们的一小时,就是我的一生。我害怕,尤其是,还在努力的人。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 126 1/1 20/20
第二周 388/466 1/2 15/35
第三周 706/1162 1/3 17/52
第四周 1104/2266 1/4 20/72
第五周 1126/3392 1/5 15/87
第六周 906/4298 1/6 20/107
第七周 1233/5531 1/7 20/127
第八周 1091/6622 1/8 24/151
第九周 320/7042 1/9 20/171
第十周 335/7377 1/10 20/191
  • 计划学习时间:20小时
  • 实际学习时间:20小时
  • 改进情况:
    到这一周为止,教材上的学习内容就全部结束了,回头看这一本书,也仅仅是学了一遍而已,里面还是存在着不熟悉以及没有灵活掌握的内容,尤其是最后的这几章,都存在着一定的难度。以后还会多加复习,虽然教材结束了,但Java的学习才刚刚开始而已,从下周开始,王老师就要开始教新一部分的知识和内容了,希望我能够应对好以后的问题和挑战吧,也希望自己以后还能够继续不断进步。

参考资料

原文地址:https://www.cnblogs.com/yu-kunpeng/p/9061390.html

时间: 2024-10-10 12:07:11

20172313 2017-2018-2 《程序设计与数据结构》第十周学习总结的相关文章

《程序设计与数据结构》第九周学习总结

学号 20172326 <程序设计与数据结构>第九周学习总结 教材学习内容总结 图:图(Graph)是一种复杂的非线性结构,在图结构中,每个元素都可以有零个或多个前驱,也可以有零个或多个后继,也就是说,元素之间的关系是任意的.与树的区别在于树中的一个结点只有一个前驱,也就是说只有一个父结点.但图中的顶点(结点)是没有这种限制关系的. 无向图:边为无需结点对的图.也就是说,现有两个顶点A.B.(A,B)与(B,A)效果相同.当两个顶点之间有边连接,也就是说这两个顶点是邻接的,也称作邻居.一个顶点

20172305 2017-2018-2 《程序设计与数据结构》第一周学习总结

20172305 2017-2018-2 <程序设计与数据结构>第一周学习总结 教材学习内容总结 本书的第一章简单的介绍了计算机和JAVA的历史,基础内容很多,代码的讲解还没用正式进入,本周一直在做敲代码的准备,简单敲了老师给的"Hello World!"以及书后的PP1.3.PP1.4等简单的小程序. 教材学习中的问题和解决过程 问题1:三种不同类型的错误,运行错误和逻辑错误的混淆 问题1解决方案:针对EX1.20的"希望做加法时却做里乘法"进行了网上

20172314 2017-2018-2 《程序设计与数据结构》第一周学习总结

20172314 2017-2018-2 <程序设计与数据结构>第一周学习总结 教材学习内容总结 本书第一章为计算机系统概述,前面是一些计算机相关的基础知识,让我对计算机有了一个总体的认识,不再是一片空白了,对主存储器和CPU影响深刻,主存储器用于保存程序和数据,CPU执行程序指令.在接下来的Java编程语言与程序开发部分,开始看的时候有点迷茫,不是很理解,后来先按照作业中附带的流程完成一些代码托管之后,接触了完整的简单的程序之后,再回过头来看书,看到的一些陌生的名词在脑海中就有了实际的对应,

20172317《程序设计与数据结构》第一周学习总结

20172317 2017-2018-2 <程序设计与数据结构>第一周学习总结 教材学习内容总结 重新温习了一遍计算机的基础 总算了解了局域网广域网因特网万维网这些东西之间的区别了 通过URL的例子知道了网址各个部分的含义 对Java编程语言和程序开发有了一个粗浅的了解 教材学习中的问题和解决过程 问题:练习题SR1.13出现了答案与题目不相符的情况 问题解决方案:题中有个选项是"网卡",答案中没有,反而有个题目没有的选项"调制解调器"(俗称"

20172322 2017-2018-2 《程序设计与数据结构》第二周学习总结

20172322 2017-2018-2 <程序设计与数据结构>第二周学习总结 教材学习内容总结 了解了print与println的区别 了解了字符串的拼接可以用+来完成 了解了转义字符的使用 学会了使用赋值 学会使用部分算术运算符 学会了使用Scanner来实现交互性 教材学习中的问题和解决过程 问题1:在最初接触赋值时对foalt和double的赋值范围不了解 问题1解决方案:使用万能的度娘后看到一个高赞答案后有了了解 问题2:在提前预习时看到2.7图形后敲入的代码无法执行 问题2解决方案

20172328《程序设计与数据结构》第二周学习总结

20172328李馨雨<程序设计与数据结构>第二周学习总结 又到周五,李馨雨同学要开始写博客了.让我们开始吧!(????) 教材学习内容总结 1.首先是String类定义的字符串,然后是print和println的区别.转义字符的学习.(让我印象深刻的\b[回车符]在字符串结尾不显示哈哈,及其更新的\t[换行符],还有在课堂上真正明白了什么是回车.) 2.了解变量.常量.赋值语句.变量:保存数据的内存单元.常量:坚定自己不会变的数据!除非你用java的反射(有点复杂,改权限.去修饰符等等.没实

20172327 2017-2018-2 《程序设计与数据结构》第二周学习总结

20172327 2017-2018-2 <程序设计与数据结构>第二周学习总结 教材学习内容总结 字符串的拼接和转义序列的使用 变量的声明和使用 讨论语法及表达式的处理 定义数据转换类型和实现类型转换的机制 创建Scanner类 教材学习中的问题和解决问题 暂无 代码学习中的问题和解决过程 问题1:在提交过程中,突然遇到无法上传的情况 问题2解决方案:通过上网查找,输入git pull之后弹出一个编辑框,选择关闭之后,再次用git push就成功了. 问题2:在按照例题2.10打代码时,Jav

学号20172328《程序设计与数据结构》第九周学习总结

学号20172328<程序设计与数据结构>第九周学习总结 教材学习内容总结(异常和递归) 第11章:异常 1.[异常处理]: 一个异常:是一个定义非正式情况或错误的对象,由程序或者运行时环境抛出,可以根据需要捕获和处理. 错误:错误类似于异常,但是错误代表不可恢复的问题并且必须捕获处理. 2.[处理异常的三种方法]:①根本不处理异常②当异常发生时处理异常③在程序的某个位置集中处理异常. 3.[未捕获的异常]:如果程序中不处理异常,则程序将非正常的终止运行,并产生关于描述在何处发生什么异常的信息

20172326 《程序设计与数据结构》第九周学习总结

学号 20172326 <程序设计与数据结构>第九周学习总结 教材学习内容总结 异常(exception):定义非正常情况下或错误的情况的对象,由程序或运行时环境抛出,可根据需要进行相应的捕获处理. 异常与错误的区别:错误代表不可恢复的问题并且必须捕获处理.而异常可以忽视,或者使用try语句处理,或调用更高级的方法. 可检测异常与不可检测异常:可检测异常必须由方法捕获,或者必须在可能抛出或传递异常方法的throws子句中列出来.在方法定义的声明头中追加一条throws子句.不可检测异常不需要使

20172322 2017-2018-2 《程序设计与数据结构》第九周学习总结

20172322 2017-2018-2 <程序设计与数据结构>第九周学习总结 教材学习内容总结 异常 学会了使用try-catch来实现未捕获的异常的处理.可以使得异常被捕获进而不导致程序出现错误退出.使用try写入可能产生异常的语句,使用catch来编写在捕获异常后继续执行的代码(可以为空). "未捕获的异常"指在编译过程中不会被编译软件显示异常但是在运行时会出现异常导致程序直接退出,例如:"ArithmeticException"."In