学号20172328《程序设计与数据结构》第十周学习总结
教材学习内容总结 (第13章:集合)
- 1.集合与数据结构:集合是一种对象,相似于保存其余对象的存储库。
- 集合的同构和异构:同构意味着这种集合保存类型所有相同的对象,异构能够保存各类类型的对象。
- 分离接口和实现:抽象数据类型(ADT)是由数据和在该数据上所实施的具体操做构成的集合。一个ADT有名称、值域和一组容许执行的操做。对象具备定义良好的接口,从而成为一种实现集合的完整机制。
- 根据对象的定义,对象自己具备定义良好的接口,接口的实现就隐含在类中,表达数据的方式和管理数据的操做都封装在对象中。因为对象与软件系统其余组成部分的交互收到有效控制,所以这种类型的对象可复用而且可靠。
- 2.数据结构的动态表示:一个动态数据结构用链来实现,利用对象引用做为链接对象之间的链,就能够创建起适用于各类状况的数据结构。按这种方式创建的数据结构具备动态性,由于其大小是在使用时动态肯定的,而不是在声明时静态肯定的。
- 动态结构:使同一个类的两个对象创建起关系,用第一个对象的引用变量指向下一个对象,而后再让第二个对象的引用变量指向第三个对象,以此类推,最后创建起一个链表。
- 动态链表的连接:书上的MagazineRack、MagazineList例子很好的阐述了。
- 其余的动态列表:动态列表有许多不一样的实现,例如能够用双向链表实现方案,或者以有序的方式实现方案。若是采用一些较复杂的数据结构可以使一些基本的公共操做更为有效,那么维护复杂数据结构所带来的额外开销是值得的。
- 3.线性数据结构:线性结构是n个数据元素的有限序列。线性数据结构是顺序表在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构。例如:列表、队列、堆栈
- 队列:队列是一种以先进先出方式(FIFO)管理数据的线性数据结构。
- 堆栈:堆栈是一种之后进先出方式(LIFO)管理数据的线性数据结构。
- 4.非线性数据结构:有些数据结构以非线性方式组织数据,于是称为非线性数据结构。例如:树和图。
- 树:树是一个非线性数据结构,由一个根节点和构成层次结构的多个节点组成。除根节点外的全部节点称为内部节点,没有子节点的节点称为叶节点。根节点在顶层,叶节点在底层。二叉树和树的操做有所不一样。
- 图:图没有相似于树根节点那样的初始入口点。在一个图中,一个节点到另外一个节点的链接称为边,链接一个图内各节点的边数通常没有限制。
- 5.Java集合类API:Java集合类API是Java标准类库中的一组类,表明不一样类型的集合体,如ArrayList和LinkedList。
- 泛型对象是一种集合类对象,实现泛型对象是为了其管理的对象的类型在某个集合类创建时也被建立,这样就容许编译时能控制一些加入到该集合中的对象的类型,减小这些对象从该集合清除时的类型转换处理。Java集合类API的定义的类为泛型。
教材学习中的问题和解决过程
问题1:在学习堆栈过程当中,不理解:html
与Stack类不一样的是,在JavaAPI中没有实现队列的类。java
是什么意思?git
- 1.(〃'▽'〃)本题解答:
首先我先去找了找javaAPI究竟是什么?编程
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工做机制的细节。数组
运行Java程序时,虚拟机装载程序的class文件所使用的Java API class文件。全部被装载的class文件(包括从应用程序中和从Java API中提取的)和全部已经装载的动态库(包含本地方法)共同组成了在Java虚拟机上运行的整个程序。数据结构
而后再去了解一下队列的使用:app
在java5中新增长了java.util.Queue接口,用以支持队列的常见操做。Queue接口与List、Set同一级别,都是继承了Collection接口。ide

- javaAPI中没有实现队列的类,因此只能经过Queue接口来实现队列。
- 问题2:若是要将基本类型的数据压入堆栈,则必须先用相应的包装类将数据封装为对象?
- 2.(〃'▽'〃)本题解答:Stack 类表示后进先出(LIFO)的对象堆栈。它经过五个操做对类 Vector 进行了扩展 ,容许将向量视为堆栈。它提供了一般的 push 和 pop 操做,以及取堆栈顶点的 peek 方法、测试堆栈是否为空的 empty 方法、在堆栈中查找项并肯定到堆栈顶距离的 search 方法。
代码调试中的问题和解决过程

上周考试错题总结
- 问题1: A Java program can handle an exception in several different ways. Which of the following is not a way that a Java program could handle an exception?(Java程序能够以几种不一样的方法处理异常。下列哪种不是Java程序可以处理异常的方法?)
A . ignore the exception(忽略异常)
B . handle the exception where it arose using try and catch statemen(使用try和catch语句处理异常)
C . propagate the exception to another method where it can be handled(将异常传递到能够进行处理的另外一种方法里面)
D . throw the exception to a pre-defined Exception class to be handled(将异常抛出为一个预先定义的异常类)
E . all of the above are ways that a Java program could handle an exception(以上全部这些都是Java程序能够处理异常的方法)
- 问题1分析和领悟:正确答案是D,而我选的是与之相去甚远的E。
我觉得这些方法均可以处理异常,然而,异常不会被抛出异常类。处理异常只有三种方法,根本不处理异常,当异常发生时处理异常,在程序的某个位置集中处理异常。因此,将问题抛出为一个预先定义的异常类是不可能实现的。
- 问题2:An exception can produce a "call stack trace" which lists(一个异常能够产生一个“调用堆栈跟踪”,关于调用堆栈踪影下面有如下说法)
A . the active methods in the order that they were invoked(顺序排列被调用的方法)
B . the active methods in the opposite order that they were invoked(以相反的顺序排列出调用的方法)
C . the values of all instance data of the object where the exception was raised(异常被提出的对象的全部实例数据的值)
D . the values of all instance data of the object where the exception was raised and all local variables and parameters of the method where the exception was raised(在提出异常的对象的全部实例数据的值以及所提出异常的方法的全部局部变量和参数)
E . the name of the exception thrown(抛出异常的名称)
- 问题2分析和领悟:正确答案选B,我选了A,调用堆栈跟踪提供了储存在运行时堆栈中的方法的名称。方法名称从堆栈中删除并以相反的顺序放置。也就是说,最先的方法是先放在这里,下一个方法其次,等等,因此最近调用的方法是在堆栈上最后一项。堆栈跟踪而后以相反的顺序显示全部异常调用的方法。
- 问题3:An exception that could also arise in the try statement that does not have an associated catch statement is(try-catch语句中没有catch子句也可能出现的异常是)
A . ClassNotFoundException
B . IllegalArgumentException
C . NegativeArraySizeException
D . NullPointException
E . OutOfMemoryException
- 问题3分析和领悟:正确答案选D,我选了B,
这道题是不会作不会作不会作 NullPointerException是Java语言中的一个异常类,位于java.lang包中,父类是java.lang.RuntimeException,该异常在源程序中能够不进行捕获和处理。ClassNotFoundException、非法参数异常和OutOfMemoryException将不会被抛出,由于try语句中没有任何代码,它们要么调用某个未知的类,要么使用一个参数,要么处理新内存的生成。只有当实例化一个数组时,才会出现NegativeArraySizeException。关于NullPointException的详细解释
- 问题4: The idea that an object can exist separate from the executing program that creates it is called(一个对象能够单独于产生它的执行程序的想法被称为)
A . transience(短暂)
B . static(静态)
C . persistence(持久性)
D . serialization(序列化)
E . finality(最后的事物)
- 问题4分析和领悟:正确答案选C,我选了E。对象存储在内存中,当对象再也不被引用时,它们会被垃圾收集器回收。当Java程序终止时,没有引用对象,所以全部对象都被回收。然而,为了未来的使用,可以保存任何给定的对象是可取的。这种特性称为持久性,它的功能是将对象的实例数据保存到文件中。这能够经过将每一个实例数据写入数据文件来完成,可是使用对象序列化简化了。
- 问题5: A processing stream is a data stream that(一个处理流数据流
能够?)
A . can manage both input streams and output streams at the same time(同时输入流和输出流)
B . performs some manipulation or process on the data(对数据执行一些操做或过程)
C . can only manage input streams(只能管理输入流)
D . operates on input and output devices but not files(操做用输入和输出设备而不是文件)
E . can manage byte streams and character streams at the same time(能够同时管理字节流和字符流)
- 问题5分析和领悟: 正确答案选B,我选了A。数据流表示一个特定的源或目标流,用于输入或输出。处理流就像一个数据流,其中一些额外的进程是添加到输入或输出中。例如,一个处理字节流可能会从一个文件中输入全部的条目,并删除任何不是数字的ASCII字符,这样输入的输入就不会抛出NumberFormatException。
- 问题6: System.err is a(n)(System.err是一个)
A . input stream(输入流)
B . GUI dialog box that indicates when an error has arisen(显示错误发生时的GUI对话框)
C . object(对象)
D . Error subclass(错误的子类)
E . RuntimeException subclass(RuntimeException的子类)
- 问题6分析和领悟: 正确答案选C,我选了B,这道题能够用书本上353页的标准IO流来解释。
-
System类中有三种对象引用变量(in,out和err),分别表明了三种I/O流,这些对象引用变量都声明为公共可见性和静态属性,以即可以经过System类直接访问。
- 问题7:The Scanner class provides an abstraction for input operations by(Scanner类为输入操做提供了一个抽象的?)
A . using try and catch statements to catch any IOException instead of throwing the Exception elsewhere(使用try-catch语句捕捉任何的IOException,而不是将异常抛出其余地方)
B . parsing input lines into individual tokens(将输入行分割为为单个字符)
C . performing conversion operations from String to the appropriate type as specified in the Scanner message(在扫描消息中指把字符串转换到适当类型)
D . inputting from the standard input stream if create is called using System.in(若是建立的调用是使用系统的,那么从标准输入流中输入)
E . all of the above(以上全部)
- 问题7分析和领悟: 正确答案是E,我选了A。Scanner类实现了在没有细节的状况下执行输入操做的抽象过程。这些细节包括导入java.io类,以某种方式处理IOexception,从标准输入流中输入,将输入划分为单个字符串,并根据须要将每一个字符串转换成输出请求。
- 问题8: The term "exception propagation" means(术语“异常的传递”是指?)
A . an exception is caught by the first catch clause(一个例外被第一个catch语句捕获)
B . an exception not caught by the first catch clause is caught by an outer (enclosing) catch clause(不被第一个catch子句捕获的异常被一个外部(封闭的)catch子句捕获)
C . exceptions are caught, sequentially, by catch clauses in the current try block(异常是被当前try语句块中的catch子句捕获的)
D . exceptions always are caught by the outermost try block(异常老是被最外层的try块捕获)
E . none of the above(以上都不是)
- 问题8分析和领悟:正确答案选E,我选了B, 异常的传递意味着一个异常须要匹配的catch子句在当前try语句块中没有,而后在下一个封闭try语句块中去寻找···直到异常已经被匹配的catch子句找到或到达main函数结束。
- 问题9: PrintWriter is a better output stream class than PrintStream because PrintWriter(PrintWriter比起PrintSteam是一个更好的输出流类,由于PrintWriter)
A . has both print and println methods and PrintStream only has print(有print和println方法而PrintStream只有print方法)
B . can output both byte and character streams and PrintStream can only output byte streams(能够输出字节和字符流,而PrintStream只能输出字节流)
C . has error checking mechanisms as part of the class and PrintStream does not(将错误检查机制做为类的一部分,而PrintStream则没有)
D . will not throw checked exceptions and PrintStream will(不会抛出检查异常和PrintStream)
E . all of the above(上面全部的)
- 问题9分析和领悟: 正确答案选C,个人答案是B。PrintWriter类是一个Writer类,而PrintStream类是一个流类。主要的区别在于PrintWriter是专门为文件而设计的,所以有错误检查机制而不是PrintStream的一部分。
- 问题10:All run-time Errors throw Exceptions.
A . true
B . false
- 问题10分析和领悟:正确答案是false,我选的true,理解提议有误。Java将任何可抛出的对象都归为一个错误或一个异常,所以没有运行时错误抛出异常。运行时错误致使程序终止。异常能够被处理,以便程序继续执行(只有在正确处理异常时)。
-
我以为此次测验挺难的,有好多知识点都不会,此次10道改错大概花了两个小时,并且理解的仍是很不到位,只能慢慢补上了 |
结对及互评
-20172301
-20172304
点评模板:
- 博客中值得学习的或问题:
- 20172301:博客中自学程度很是好,他是真的深刻进去学懂了程序设计的内核,真的佩服!鼓掌鼓掌!
- 20172304:博客内容仍是有点简略,但愿能够更加的详细一点。
其余(感悟、思考等,可选)
这是本学期最后一次学习课本所写的总结博客了。总以为一本书太厚一学期太长,但就是很快的在本身指缝中间溜走了。在学习这本书的时候收获了自主性和思考性,固然还有不少疑问还藏在书本的字里行间。之后仍是要多翻翻,多看看这本书才能够。
前几天看本身之前的摘抄本,看到这样一段话:
人可否有好的心态,在很大程度上取决于价值观。一个价值观正确且坚决的人,他知道人生中什么是重要的,什么是不重要的,对重要的看得准、抓得住,对不重要的看得开、放得下,大事有主见,小事能超脱,心态天然会好。
价值观于本身而言,就像是潜在的一根绳子,一头系在本身身上,一头抓在命运手里。当咱们编织好本身绳子系在本身身上的时候,咱们要走向何方已经冥冥中定下了。因此,在编织本身绳子的时候,仍是须要足够的去了解本身,知道本身想要什么,这才是对于本身而言最重要的。
学习进度条
目标 |
5000行 |
30篇 |
400小时 |
第一周 |
100/100 |
1/1 |
15/15 |
第二周 |
377/477 |
1/2 |
20/35 |
第三周 |
280/757 |
2/4 |
22/57 |
第四周 |
973/1730 |
1/5 |
35/92 |
第五周 |
1000/2730 |
1/6 |
40/132 |
第六周 |
729 /3459 |
1/7 |
40/172 |
第七周 |
660/4119 |
2/9 |
30/192 |
第八周 |
1417/5536 |
3/12 |
40/232 |
第九周 |
1139/6675 |
2/14 |
60/292 |
第十周 |
758/7433 |
2/14 |
40/332 |
参考资料