20182312第六周学习总结

20182312 2019-2020-1 《数据结构与面向对象程序设计》第六周学习总结

教材学习内容总结

第九章
多态性
1、延迟绑定:多态性引用可以在不同的时间指向不同类型的对象,延迟绑定指的是延迟到程序运行时执行一个方法调用与一个方法定义的绑定。
2、由继承实现多态性:一个引用变量可以指向有继承关系的任何类的任何对象。引用变量所指向对象的类型决定了其调用的方法。
3、接口名用做声明对象引用变量的类型,这个接口引用变量就可以指向任何实现该接口的实现类的对象。
第十章
异常
1、程序中的异常必须被捕获,否则程序无法继续运行下去,可以使用try-catch语句捕获异常,也可以使用-throws throw抛出异常。
2、finally子句:无论是否出现异常,都会执行。
3、异常的传递:异常未被捕捉或处理就会被传递给调用此方法的方法。

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

  • 问题1:抛出异常的意义到底在哪,为何可以不进行对异常的处理
  • 问题1解决方案:抛出异常我认为应该只是一种能使程序不因这个你已经想到的错误而中断的一种方法,同时可以提醒你抛出异常的原因,并告诉你指明异常在何处发生。
  • 问题2:继承机制如何支持多态性?
  • 问题2解决方案:在Java中,用父类声明的一个引用变量可以指向一个子类对象。如果两个类具有两个相同签名的方法,则这个父类引用就具有多态性。

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

  • 问题1:writer2.write和writer2.append的作用到底有什么用,为何有时会把我的写入的东西删除。
  • 问题1解决方案:write每次写入前都会把文件原有内容格式化,append只是单纯的添加,不对原内容做改动,append会把文件内指针指向结尾。
  • 问题2:字符串长度越界报错无法捕获
  • 问题2解决方案:加分题里做过,字符串的容量会自动扩充。

代码托管

上周考试错题总结

  • What does the following code do? Assume list is an array of int values, temp is some previously initialized int value, and c is an int initialized to 0.

for (j=0; j < list.length; j++)

if (list[j] < temp) c++;
A.It finds the smallest value and stores it in temp
B.It finds the largest value and stores it in temp
C.It counts the number of elements equal to the smallest value in list
D.It counts the number of elements in list that are less than temp
E.It sorts the values in list to be in ascending order
本题答案:D 我的答案:E
解析:语句if (list[j] < temp) c++;将list中的每个元素与temp进行比较,并仅在元素小于temp时将一个元素添加到c中,因此它计算list中小于temp的元素数量,并将结果存储在c中。

  • 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 我的答案:B
    解析:在每次连续的选择排序中,会找到未排序的最小值,并与当前数组索引进行交换(其中当前索引从0开始,一直到数组中倒数第二个位置)。在第一次传递时,最小的元素2与索引0交换,因此2和9交换位置。
  • Polymorphism is achieved by
    A.overloading
    B.overriding
    C.embedding
    D.abstraction
    E.encapsulation
    正确答案:B 我的答案:A
    解析:重载只是为具有不同参数列表的方法提供了替代方法。覆盖提供了多态性,因为调用适当的方法取决于当前引用的对象。嵌入是类中类的封闭。抽象与多态性无关。封装是使用可见性修饰符(public、private、protected)实现的。
  • 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
    解析:选择排序和插入排序都可以“就地”实现。这意味着不需要额外的内存,排序后的数据只是在数据数组中进行重新排列。
  • Which statement is completely true?
    A.Java upcasts automatically, but you must explicitly downcast
    B.Java downcasts automatically, but you must explicitly upcast
    C.Java expects the user to explicitly upcast and downcast
    D.Java will both upcast and downcast automatically
    E.The rules for upcasting and downcasting depend upon whether classes are declared public, protected, or private
    正确答案:A 我的答案:C
    解析:向上转换是完全安全的——它是Java支持的单一继承结构的产物。相比之下,向下转换必须由程序员显式地完成。Java只在一个方向自动进行数据类型转换。上抛和下抛的规则不以任何方式依赖于使用的可见性修饰符。
  • 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
    解析:虽然继承和接口支持多态性,但它们只在具有后期绑定时才这样做。但是,重载是多态性的一种形式,一个(方法)名,多个主体,所以只要程序使用重载,多态性是在使用。

点评过的同学博客和代码

  • 本周结对学习情况

    • 20182308
    • 结对学习内容
      • 我们纠结了好久有关文件读写有关的问题,一开始一直看不懂那个FileTest文件到底是在干什么,所以我们花了很久的时间去琢磨那些代码代表的是读出哪些代码代表的是写入,最后已经熟练掌握了相关文件读写的相关知识。
  • 上周博客互评情况

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

感悟:我们现在所学习的东西,其实认真琢磨花点时间就能解决,我们不应该就每次老师给出代码之后,照着别人的样子将老师的代码简单的复制粘贴,这样是没有意义的即使老师已经给出了代码,我们也应该去认真考虑每一行到底有什么意义,只有这样我们才能算是真正的学到了东西。
思考:我们的学习是否还是太浮于表面了,感觉我这种只完成老师所布置任务的学生和那些学的好的学生渐行渐远,每次我问别人问题的时候,别人能告诉我一大堆我所不知道的概念,让我觉得也许自己的学习还是太被动了,应该向别人一样主动学习。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 130/130 2/2 23/23
第二周 451/581 3/5 42/67
第三周 451/581 3/5 42/67
第四周 617/1068 2/7 28/95
第五周 632/1700 2/9 17/112
第六周 666/2366 1/10 22/134
  • 计划学习时间:25小时

  • 实际学习时间:22小时

  • 改进情况:开始学会自己看代码学代码,对Java尝试进行理解。

参考资料

posted on 2019-10-15 22:20  shouko  阅读(170)  评论(2编辑  收藏  举报