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 .n

    B .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

  • 解析:这是使用类名声明引用变量的多态函数之一。

结对及互评

  • 本周结对学习情况

20182330

点评:

  • 代码练习较多,问题较为深邃(至少我看不懂)

  • 基于评分标准我给本博客打分: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

参考资料

posted @ 2019-10-15 20:24  20182314鞠明翰  阅读(269)  评论(2编辑  收藏  举报