20182314《程序设计与设计结构》 第六周学习总结
20182314《程序设计与设计结构》 第六周学习总结
教材学习内容总结
第九章 多态 :
1、后绑定:很多情形下,方法调用和方法定义的绑定是在编译的时候完,但多态的引用,绑定必须到运行时才能确定。需要由调用时所指向的对象的类型来确定下来,需要由调用时所指向的对象的类型来确定要用到那个方法定义,这个延迟的提交称为后绑定。
2、通过继承实现多态:当用一个类名声明一个引用变量时,可以用它指向这个类的任何对象。另外,它还可以指向声明继承于它的任意类的任何对象。
3、接口:
(1)抽象方法是一个没有实现的方法,即抽象方法中没有定义方法体,接口不能被实例化。
(2)当一个类给出了接口中定义的每一个抽象方法,就称类实现了接口。
(3)接口名可用来声明对象引用变量,同时接口引用可以指向实现这个接口的任意类的任何对象。
第十章:
1.java程序中出现的问题会产生异常或错误。一个异常是一个对象,它定义了并不经常出现的或是错误的情形。异常由程序或运行时环境抛出,并能被捕获,需要时可进行适当的处理。错误类似于异常,但错误一般表示一种不可被恢复的情况,而且不应该被捕获。
2.如果程序对异常不进行任何处理,那么程序就会非正常终止,并会产生一条消息,描述发生了什么异常,在哪里发生异常。
3.如果try块内发生了异常,则执行对应的catch子句中的代码。如果有finally子句,则不论如何退出try块,都执行其中的语句。(不论是正常退出try块,还是因抛出一个异常而退出,都要执行finally子句)
4.从Exception类或它的一个后继类派生一个新类,就可以新的异常。
5.有些异常是必检的,而其他一些是免检的。必检异常必须被一个方法捕获,或者必须列在抛出它或传播它的任一方法的throws子句。
6.java类库中包含了许多类,可用来定义具有不同属性的I/O流。
7.必须明确关闭输出文件流,否则可能不能正确保存写入的数据。
教材学习中的问题和解决过程
-
问题1:字符流和字节流有什么区别?
-
问题1解决方案字节流不会使用到缓冲区,而字符流会。另外,使用缓冲区的字符流更加适合进行中文数据的处理,所以在日常的开发中,如果要涉及到含有中文信息的输出一般都会采用字符流处理,但是从另外一方面来说,字节流和字符流的基本处理形式是相似的,IO很多情况下都是进行数据的传输使用(二进制)。
-
问题2:错误和异常都会使程序终止运行,两者到底有什么区别?
-
问题2解决办法:异常是面向对象系统中重要的组成部分。错误类似异常,但错误一般表示一种不可恢复的情况,而且不应该被捕获。同时异常是指程序中出现的问题或不常见的情形。
代码调试中的问题和解决过程
-
问题1:
在完成文件读写这个任务时,搞不懂怎么用键盘输入两个数,手写到文件。
-
问题1解决方案:一开始只是刚刚略懂输入输出流的概念,不会从外部传入数据,所以当听到必须从外部传入两个复数的时候,心情极度崩溃,这意味我必须把之前的所有全部推倒。我参考了java基础io流——OutputStream和InputStream的故事(温故知新)和OutputStream得知了Outputstream.write(byte a)为向文件中写入数据,同时理解到Outputstream.write后要加flush和close结束输出否则可能会抛出异常。
-
问题2:文件读写任务时输入输出流之前传输的数据是byte类型,而我当前编写的计算器只支持字符串
-
问题2解决方案:
string转化为byte[]数组:
String str = "abcd";
byte[] bs = str.getBytes();
byte[]数组转化为string字符串:
byte[] bs1 = {97,98,100};
String s = new String(bs1);
代码托管
上周考试错题总结
-
错题1:
Which of the following lists of numbers would accurately show the array {9,4,12,2,6,8,18} after the first pass through the Selection Sort algorithm?
A .9, 4, 12, 2, 6, 8, 18
B .4, 9, 12, 2, 6, 8, 18
C .2, 4, 12, 9, 6, 8, 18
D .2, 4, 6, 8, 9, 12, 18
E .2, 4, 9, 12, 6, 8, 18
正确答案: C 你的答案: A
-
解析:在选择排序的每个连续过程中,都会找到未排序的最小值,并与当前数组索引交换(当前索引从0开始,一直到数组中最后一个位置)。在第一个过程中,最小的元素2与索引0交换,所以2和9交换位置。
-
错题2:
Both the Insertion Sort and the Selection Sort algorithms have efficiencies on the order of ________ where n is the number of values in the array being sorted.
A .nB .n * log n
C .n^2
D .n^3
E .Insertion sort has an efficiency of n and Selection Sort has an efficiency of n^2
正确答案: E 你的答案: C
-
解析:
两种排序算法都使用两个嵌套循环,每个循环都执行大约n次,这给两者都带来了N*N或N ^ 2的复杂性。
-
错题3:
Comparing the amount of memory required by selection sort and insertion sort, what can one say?
A .Selection sort requires more additional memory than insertion sort
B .Insertion sort requires more additional memory than selection sort
C .Both methods require about as much additional memory as the data they are sorting
D .Neither method requires additional memory
E .None of the above
正确答案: D 你的答案: B
-
解析:
选择排序和插入排序都可以“就地”实现。这意味着不需要额外的内存,只要在两种排序过程中在数据数组中重新排列要排序的数 据。
-
错题4:
Which of the following statements is completely true?
A .If a class is declared to be abstract then every method in the class is abstract and must be overridden
B .If a class is declared to be abstract then some methods in the class may have their bodies omitted
C .If a class is declared to be abstract then all methods in the class must have their bodies omitted
D .If a class is declared to be abstract then all the instance variables must be overridden when a concrete class is derived from the abstract base class
正确答案: B 你的答案: D
-
解析:
创建抽象类的唯一方法是在类中创建一些抽象方法。所以,答案B是真的。当然,抽象类中的所有方法都不必是抽象的。
-
错题5:
Can a program exhibit polymorphism if it only implements early binding?
A .Yes, because one form of polymorphism is overloading
B .No, because without late binding polymorphism cannot be supported
C .Yes, because so long as the programs uses inheritance and/or interfaces it supports polymorphism
D .Yes, because early binding has nothing to do with polymorphism
E .none of the above
正确答案: A 你的答案:B
-
解析:
虽然继承和接口支持多态性,但它们只在具有后期绑定的情况下才支持多态性。但是,重载是多态性的一种形式,一个(方法)名,多个体只要程序使用重载,多态性就在使用中。
-
错题6:
A reference variable can refer to any object created from any class related to it by inheritance.
A .true
B .false
正确答案: B 你的答案: A
-
解析:
这是一种用来实现多态引用的技术,多态引用的精确解释将在执行期间发生变化,具体取决于遇到变量时引用的精确对象。
-
错题7:
The fact that the System.out.println( ) method is able to handle such a wide variety of objects, and print them correctly, is an example of the polymorphic nature of the println( ) method.
A .true
B .false
正确答案:A 你的答案:B
-
解析:
由于println()本质上是高度多态的,所以它能够正确地打印各种预定义(库)和内置(原语)数据。 -
错题8:
A class reference can refer to any object of any class that descends from the class.A .true
B .false
正确答案:A 我的答案:B
-
解析:这是使用类名声明引用变量的多态函数之一。
结对及互评
- 本周结对学习情况
点评:
-
代码练习较多,问题较为深邃(至少我看不懂)
-
基于评分标准我给本博客打分:16分。得分情况如下:
1.正确使用Markdown语法(加1分)
2.模板中的要素齐全(加1分)
3.教材学习中的问题和解决过程(加3分)
4.代码调试中的问题和解决过程(加4分)
5.其他加分(加7分)
6.进度条中记录学习时间与改进情况(1)
7.感想,体会不假大空(1)
8.有动手写新代码(1)
9.排版精美(1)
10.错题学习深入(1)
11.点评认真,能指出博客和代码中的问题(1)
12.结对学习情况真实可信(1)
其他(感悟、思考等,可选)
最近java水平感觉有所提升,但还是不太想写书上的代码。最近又要学安卓了,安卓确实有点难,一开始都没找到敲代码的位置,确实有点心态爆炸,希望能在跟上的同时尽量往前面撵一撵。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 10000行 | 30篇 | 400小时 | |
第6周 | 812/1000 | 2/2 | 20/20 |