20182333 2019-2020-1 《数据结构与面向对象程序设计》第6周学习总结
20182333 2019-2020-1 《数据结构与面向对象程序设计》第6周学习总结
教材学习内容总结
第九章 多态
- 1.后绑定。效率低于编译阶段的绑定效率。
- 2.学习练习如何利用继承方式来实现多态性。
- 3.学习练习如何利用接口来实现多态性。
- 4.多态性设计(多个不同对象执行相同的基本行为,并且行为的不同实现方式取决于对象的具体类型。)
第十章 异常
- 1.异常处理(异常抛出的问题和处理异常的方法)
- 2.未捕获的异常。
- 3.try-catch语句与finally子句。
- 4.异常传播。(就与传递性一样,举个例子:程序一存在异常,程序二调用程序一,程序二就会存在与程序一相同的异常。)
- 5.异常类层次结构。(许多类型的异常类都由Exception类派生,但定义各种异常的子类却分散定义在其他几个包中,继承关系可以跨越包边界。)
- 6.自定义异常与必检异常与免检异常。
- 7.初步学习I/O流的部分内容和I/O异常。(三种标准I/O流(in、out、err))可检测的IOExceptions异常
教材学习中的问题和解决过程
- 问题1:继承如何支持多态
- 问题1解决方案:在Java中,使用父类声明的引用变量可以指向子类的对象。如何俩个类包含相同签名的方法时,父类引用是多态的。
- 问题2:类与接口有什么不同
- 问题2解决方案:类可被实例化,接口不能被实例化。接口可以只包含抽象方法和常量。类提供了接口的实现。类层次和接口层次不能交叉。类可以用来派生一个新类,接口可用来派生一个新接口的实现。
- 问题3:如何使用接口完成多态
- 问题3解决方案:接口名可作为引用类型使用。这样的引用变量可指向实现该接口的任意类的任何对象。因为所有的类实现了同一个接口,他们有公共的签名,所以可以动态绑定。
- 问题4:try-catch语句的运用。
- 问题4解决方案:如果代码没有产生异常,将继续执行try语句后的语句块,所有catch子句后的语句。如果有异常,则控制立刻转移到相应的catch子句处理异常。
- 问题5:finally子句的应用。
- 问题5解决方案:一条try-catch语句可以有一个可选的finally子句,用于定义一段无论是否有异常发生都将执行的代码。如果有finally子句,则必须跟在所有的catch子句后面。try语句块可以没有catch子句,但仍然可以使用finally子句。
- 问题6:可检测异常与不可检测异常的差异
- 问题6解决方案:可检测异常必须由方法捕获,或者必须在可能抛出或传递异常方法的throws子句中列出来。throws子句用在方法头。throw子句用在方法中。java中唯一的不可检测异常是RuntimeException类的对象或该类的后代类对象。
代码调试中的问题和解决过程
-
问题1:
-
问题1解决方案:
-
问题2:如何实现try catch的无限循环?
-
问题2解决方案:在try catch外一层设置无限循环,使用一个布尔数控制循环的终止。当程序捕捉到格式错误时把布尔数改为false,直到输对改为true,跳出循环。
代码托管
上周考试错题总结
-
1.
-
解析:在每次连续的选择排序中,会找到未排序的最小值,并与当前数组索引进行交换(其中当前索引从0开始,一直到数组中倒数第二个位置)。在第一次传递时,最小的元素2与索引0交换,因此2和9交换位置。
-
单词:index(索引)element(元素)algorithm(算法)
-
2.
-
解析:重载只是为具有不同参数列表的方法提供了替代方法。覆盖提供了多态性,因为调用适当的方法取决于当前引用的对象。嵌入是类中类的封闭。抽象与多态性无关。封装是使用可见性修饰符(public、private、protected)实现的。
-
单词:Overloading(重载)Overriding(覆盖)Embedding(嵌入)Abstraction(嵌入)polymorphism(多态性)
-
3.
-
解析:反了!决定调用哪个方法的是对象的类型,而不是引用的类型。
-
单词:reference(引用)invoked(调用)
-
4
-
解析:调用堆栈跟踪提供存储在运行时堆栈中的方法的名称。方法名称从堆栈中删除以相反的顺序放置,也就是说,最早的方法是先放在这里,下一个方法其次,等等,所以最近调用的方法是在堆栈上最后一项,这是第一个删除。堆栈跟踪然后显示所有活动方法的调用顺序(最近一次)。
-
单词:stack trace (堆栈跟踪)opposite (相反)
-
5.
-
解析:如果字符串方法的参数引用了字符串中超出字符串界限的位置(例如,一个负整数或一个大于或等于字符串中字符数的整数),则抛出StringIndexOutOfBoundsException。这可以在charAt或子字符串方法中发生。
-
单词:bounds(界限)substring(子字符串)
-
6.
-
解析:这两个异常都是RuntimeException的子异常,而RuntimeException本身就是Exception的子异常。Error是一个可抛出的对象,与Exception不同,IllegalAccessException和CheckedException是Exception的子对象,而不是RuntimeException的子对象。
-
单词:derived(派生的)
-
7.
-
解析:B、C和D中的答案都是正确的,runtimeexception是可抛出的对象,不属于Error类,有两种类型的runtimeexception是arithomeexception和NullPointerException。非runtimeexception的异常包括各种已检查的异常,但runtimeexception不是已检查的异常。
-
8.
-
解析:数据流表示特定的源或目标流,用于输入或输出。处理流类似于数据流,其中一些附加的流程被添加到输入或输出中。例如,处理字节流可能会从文件中输入所有项,并删除任何非数字的ASCII字符,以便预期为数字的输入不会引发NumberFormatException。
-
单词:stream(流)destination(目的地)
-
9.
-
解析:在Java, System中有三个可用的默认流。在System.in,System.out ,System.err所有这些都是带有System的对象。System.in作为一个输入流,System.out 是一个输出流,System.err是一个错误流(也是一个输出流)。
-
单词:indicates(表明)
-
10.
-
解析:Java程序的输入是困难的,因为它需要大量的开销。扫描仪类实现了所有这些开销,因此程序员不必看到它。因此,扫描仪是执行输入操作的抽象,没有细节。这些细节包括导入java。io类,以某种方式处理ioexception,从标准输入流输入,将输入划分为单个标记,并根据需要将每个标记转换为请求表单。
-
单词:converting(转换)tokens (令牌)overhead(开销)
-
11.
-
解析:readLine()方法返回一个字符串,该字符串等于文件中的下一个文本项。如果文件为空,则返回null。
-
单词:assume(假设)
点评过的同学博客和代码
其他(感悟、思考等,可选)
- 本周学习了多态和异常,学习了多态与继承、接口之间的关系,还学习了如何捕获异常、处里异常的方法以及自定义一个异常。
- 感觉我对于java的学习有点吃力了,有时侯老师课上讲的一些知识点课下就忘记了,听课效率不高,有时候会开小差。而且感觉课下自学的还是有点少了。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 10000行 | 30篇 | 400小时 | |
第一周 | 56/56 | 2/2 | 20/20 | 主要学会了简单的操作Linux以及如何编写简单的java程序并将它上传到码云 |
第二、三周 | 331/407 | 3/5 | 23/43 | 学会了一些类和程序包的使用,也明白了C语言和Java在有些地方的区别 |
第四周 | 595/1002 | 2/7 | 20/60 | 学会了IDEA以及用IDEAgit码云,也学会了TDD测试 |
第五周 | 1621/2623 | 2/9 | 17/77 | 见识了服务器与用户链接的代码,也学习了继承的一些知识。 |
第六周 | 1770/4393 | 1/10 | 22/99 | 学习了多态以及与接口和继承的关系,还有就是对异常的学习和处理异常的方法以及自定义一个异常 |
-
计划学习时间:20小时
-
实际学习时间:22小时
-
改进情况:这周比上周的代码量又多了一点,不错。